Descarga tu guía de trucos informáticos aquí
Secure Website Sitio Web Seguro Gestión Sesiones CRUDSecure Website Sitio Web Seguro Gestión Sesiones CRUD
Secure Website Sitio Web Seguro Gestión Sesiones CRUD

Secure Website: Sitio Web Seguro con Gestión de Sesiones y CRUD

Secure Website es un programa de sitio web seguro con registro, inicio de sesión, gestión de sesiones y controles CRUD. Construido pensando en la seguridad

screenshot Secure Website
screenshot Secure Website

Utilicé PHP Data Objects (PDO) para acceder de forma segura a una base de datos en PHP (base de datos MySQL incluida).

Utilicé CSS Flexbox para un diseño receptivo.

No utilicé ningún framework.

Todos los scripts se validan con éxito con Markup Validation Service.

Construido con la seguridad en mente.

Los siguientes ataques son prevenidos:

  • Fuerza Bruta,
  • Fijación de la sesión,
  • Inyección SQL
  • Cross-Site Scripting (XSS),
  • Falsificación de solicitudes en sitios cruzados (CSRF),
  • etc.

Probado en XAMPP para Windows v7.4.3 (64-bit) con Chrome v80.0.3987.149 (64-bit) y Firefox v74.0 (64-bit).

Hecho con fines educativos. ¡Espero que te ayude!

Cómo Ejecutar

Importa ‘\db\secure_website.sql’ a tu servidor de base de datos.

Copia todo el contenido de ‘\src\’ al directorio root web de tu servidor (e.g. to ‘\xampp\htdocs\’ en XAMPP).

Cambia los ajustes de la base de datos dentro de ‘\src\php\config.ini’ según sea necesario.

Comprueba las credenciales de acceso aquí.

Navega a la página web con tu navegador preferido.

Apache Hardening

Evitar la divulgación de la versión. Desde tu directorio de Apache dirígete a ‘\conf\extra\httpd-default.conf’ y configura ServerTokens en Prod y ServerSignature en Off.

Evitar el listado de directorios. Desde tu directorio de Apache dirígete a ‘\conf\httpd.conf’, navega a la sección DocumentRoot y elimina Indexes de Options Indexes FollowSymLinks Includes ExecCGI.

Evitar el listado de directorios ‘/icons/’. Desde tu directorio Apache dirígete a ‘\conf\extra\httpd-autoindex.conf’ y comenta Alias /icons/ "C:/xampp/apache/icons/".

Deshabilitar la página ‘/server-status’. Desde tu directorio de Apache dirígete a ‘\confextra\httpd-info.conf’ y comenta todo el elemento <Location /server-status>.

Deshabilitar el método HTTP TRACE. Desde tu directorio de Apache dirígete a ‘\conf\httpd.conf’, navega a la sección Supplemental configuration y añade la nueva configuración TraceEnable Off.

Prevenir los ataques de clickjacking. Desde tu directorio de Apache dirígete a ‘\conf\httpd.conf’, navega a la sección de  Supplemental configuration y añade una nueva configuración  Header set X-Frame-Options deny.

Establezca la Política de Seguridad de Contenidos en el encabezado de respuesta HTTP. La siguiente configuración solo te permitirá cargar recursos de tu propio dominio. Desde tu directorio de Apache dirígete a ‘\conf\httpd.conf’, navega a la sección Supplemental configuration y añade la nueva configuración Header set Content-Security-Policy "default-src 'self';". Busca en Internet más opciones de Content Security Policy.

Bloquear MIME sniffing. Desde tu directorio de Apache dirígete a ‘\conf\httpd.conf’, navega a Supplemental configuration y añade la nueva configuración Header set X-Content-Type-Options nosniff.

Aplicar cross-site scripting filter. Desde tu directorio de Apache dirígete a ‘\conf\httpd.conf’, navega a la sección de Supplemental configuration y añade la nueva configuración  Header set X-XSS-Protection "1; mode=block".

Mitigar Slow Loris y otros ataques DoS. Desde tu directorio Apache dirígete a ‘\confexion.conf’ y baja el tiempo de espera a 60.

PHP Hardening

Evitar la divulgación de la versión. Desde tu directorio PHP dirígete a ‘php.ini’ y establece  expose_php en Off.

Evitar la divulgación de información de errores de visualización. Desde tu directorio PHP dirígete a ‘php.ini’ y establece tanto display_errors como display_startup_errors en Off.

Establece la zona horaria correcta del servidor. Desde tu directorio PHP, dirígete a ‘php.ini’ y establece ambas instancias de date.timezone en tu zona horaria. Busca en la web una lista de zonas horarias compatibles con PHP.

Establece el nombre de cookie de sesión. Desde tu directorio PHP dirígete a ‘php.ini’ y establece session.name con el valor que desees. Además de este sitio web, también se establece aquí.

Establece la duración de la sesión de cookie. Desde tu directorio PHP dirígete a ‘php.ini’ y establece  session.cookie_lifetime a tu propio valor deseado. Además de este sitio web, también se establece aquí.

Establece la flag HttpOnly de la sesión de cookie. La siguiente configuración no permitirá que los scripts del lado del cliente accedan a la sesión cookie. Desde tu directorio PHP dirígete a ‘php.ini’ y establece  session.cookie_httponly en 1. Además de este sitio web, también está establecido aquí.

Usa el modo strict session. Desde tu directorio PHP dirígete a ‘php.ini’ y establece session.use_strict_mode  a 1.

Deshabilita la subida de archivos. Haz lo siguiente solo si tu sitio web no utiliza la subida de archivos. Desde tu directorio PHP vedirígete a ‘php.ini’ y establece file_uploads en Off.

Evita la inclusión de archivos remotos. Desde tu directorio PHP dirígete a ‘php.ini’ y establece allow_url_fopen en Off.

Deshabilitar las funciones peligrosas de PHP. Desde tu directorio PHP dirígete a ‘php.ini’ y establece disable_functions a  eval;exec;shell_exec;curl_exec;passthru;system;proc_open;popen. Busca en Internet funciones adicionales de PHP peligrosas (dangerous PHP functions.).

Certificado SSL/TLS

Descubra cómo crear un certificado SSL/TLS aquí.

Imágenes

Figura 1 – Página Inicio

Página de inicio secure-website
Página de inicio secure-website

Figura 2 – Página de Registro

Página de registro secure-website
Página de registro secure-website

Figura 3 – Página de Usuarios

Página de usuarios secure-website
Página de usuarios secure-website

Más artículos
Hacer capturas de pantalla en terminal Linux con Scrot
Cómo hacer capturas de pantalla en terminal Linux con Scrot