PWR Norma
Auditoria de cumplimiento normativo para sitios web. Verifica RGPD, LSSI y ENS basico. Reutiliza los checks tecnicos de Vigia para SSL, headers, cookies y DNS. Genera informes detallados con puntuacion y recomendaciones.
Instalacion
Norma depende de Vigia para los checks tecnicos. Ambos se cargan automaticamente.
require_once __DIR__ . '/core/norma.php';
// vigia.php se carga automaticamente
Requisitos minimos
- PHP 7.4 o superior
- Extension
curlpara peticiones HTTP - Extension
opensslpara analisis SSL - Acceso a red para analizar sitios externos
Uso por CLI
php core/norma.php URL [--rgpd] [--lssi] [--ens] [--todo]
Inicio rapido
Audita un sitio web contra RGPD y LSSI en una linea.
require_once 'core/norma.php';
$resultado = pwr_norma_auditar('https://ejemplo.com');
$puntuacion = pwr_norma_puntuacion($resultado);
echo 'Cumplimiento: ' . $puntuacion['porcentaje'] . '%';
Funciones
pwr_norma_auditar()
Ejecuta una auditoria completa contra las normativas indicadas. Por defecto audita RGPD y LSSI.
pwr_norma_auditar(string $url, array $normativas = ['rgpd', 'lssi']): array
| Parametro | Tipo | Descripcion |
|---|---|---|
$url | string | URL del sitio a auditar |
$normativas | array | Normativas a verificar: 'rgpd', 'lssi', 'ens' |
Retorna: array con resultados por normativa, checks individuales y recomendaciones.
pwr_norma_rgpd()
Verifica cumplimiento RGPD: politica de privacidad, consentimiento de cookies, cifrado, etc.
pwr_norma_rgpd(string $url): array
Retorna: array de checks RGPD con check, cumple (bool), detalle, recomendacion.
pwr_norma_lssi()
Verifica cumplimiento LSSI-CE: aviso legal, datos del titular, condiciones de uso.
pwr_norma_lssi(string $url): array
Retorna: array de checks LSSI con check, cumple (bool), detalle, recomendacion.
pwr_norma_ens_basico()
Verifica cumplimiento ENS basico: HTTPS, headers de seguridad, configuracion de servidor.
pwr_norma_ens_basico(string $url): array
Retorna: array de checks ENS con check, cumple (bool), detalle, recomendacion.
pwr_norma_cookies()
Analiza el cumplimiento normativo de las cookies: consentimiento, informacion, duracion.
pwr_norma_cookies(string $url): array
Retorna: array con cookies_detectadas, banner_presente, problemas.
pwr_norma_politica_privacidad()
Busca y analiza la pagina de politica de privacidad del sitio.
pwr_norma_politica_privacidad(string $url): array
Retorna: array con encontrada (bool), url_politica, checks de contenido.
pwr_norma_aviso_legal()
Busca y analiza la pagina de aviso legal del sitio.
pwr_norma_aviso_legal(string $url): array
Retorna: array con encontrado (bool), url_aviso, checks de contenido.
pwr_norma_puntuacion()
Calcula la puntuacion global de cumplimiento normativo en porcentaje.
pwr_norma_puntuacion(array $resultados): array
Retorna: array con porcentaje (0-100), total_checks, cumplidos, desglose por normativa.
pwr_norma_informe()
Genera un informe completo de cumplimiento en formato JSON o texto.
pwr_norma_informe(array $resultados, string $formato = 'json'): string
| Parametro | Tipo | Descripcion |
|---|---|---|
$resultados | array | Resultados de pwr_norma_auditar() |
$formato | string | 'json' o 'texto' |
Retorna: string con el informe formateado.
pwr_norma_info()
Devuelve informacion del modulo: version y normativas soportadas.
pwr_norma_info(): array
Retorna: array con version, normativas (array de normativas soportadas).
Configuracion
Norma no requiere archivo de configuracion. Utiliza las constantes de Vigia para timeouts y rate limiting de peticiones.
| Normativa | Descripcion | Checks principales |
|---|---|---|
RGPD | Reglamento General de Proteccion de Datos | Politica de privacidad, consentimiento cookies, cifrado, derechos ARCO |
LSSI | Ley de Servicios de la Sociedad de la Informacion | Aviso legal, datos titular, condiciones de uso, comunicaciones comerciales |
ENS | Esquema Nacional de Seguridad (basico) | HTTPS, headers seguridad, TLS 1.2+, CSP, HSTS |
Ejemplos
Auditoria completa RGPD + LSSI + ENS
require_once 'core/norma.php';
$url = 'https://ejemplo.com';
$resultado = pwr_norma_auditar($url, ['rgpd', 'lssi', 'ens']);
$puntuacion = pwr_norma_puntuacion($resultado);
echo "Cumplimiento global: {$puntuacion['porcentaje']}%\n";
echo "Checks cumplidos: {$puntuacion['cumplidos']}/{$puntuacion['total_checks']}\n";
// Generar informe
$informe = pwr_norma_informe($resultado, 'json');
file_put_contents('informe_cumplimiento.json', $informe);
Solo verificar RGPD
require_once 'core/norma.php';
$rgpd = pwr_norma_rgpd('https://ejemplo.com');
foreach ($rgpd as $check) {
$estado = $check['cumple'] ? 'OK' : 'FALLO';
echo "[{$estado}] {$check['check']}: {$check['detalle']}\n";
}
Verificar politica de privacidad y aviso legal
require_once 'core/norma.php';
$url = 'https://ejemplo.com';
$privacidad = pwr_norma_politica_privacidad($url);
echo 'Politica de privacidad: ' . ($privacidad['encontrada'] ? 'Si' : 'No') . "\n";
$aviso = pwr_norma_aviso_legal($url);
echo 'Aviso legal: ' . ($aviso['encontrado'] ? 'Si' : 'No') . "\n";
$cookies = pwr_norma_cookies($url);
echo 'Banner cookies: ' . ($cookies['banner_presente'] ? 'Si' : 'No') . "\n";
Uso desde CLI
# Auditoria completa
php core/norma.php https://ejemplo.com --todo
# Solo RGPD
php core/norma.php https://ejemplo.com --rgpd
# RGPD + LSSI
php core/norma.php https://ejemplo.com --rgpd --lssi
# Solo ENS basico
php core/norma.php https://ejemplo.com --ens