Los elementos marcados con (*) indican que el elemento es una solución fundamental al problema relevante y debe hacer todo lo posible para completar estos contenidos. Los elementos no marcados con (*) indican que el elemento no puede eliminar completamente los riesgos de seguridad, sino solo que los problemas de seguridad se pueden evitar mediante este método.
inyección SQL
(*) Utilice la función de enlace de variables SQL al combinar declaraciones SQL
(*) Si la base de datos no proporciona enlace de variables, debe escapar de todas las variables que componen el SQL y no mostrar el mensaje de error intacto en el navegador.
Establezca los permisos adecuados para los usuarios que acceden a la base de datos.
Inyección de línea de comando del sistema operativo
(*) Evite el uso de lenguajes que puedan iniciar comandos de shell. Si puede iniciar comandos de shell, debe verificar todas las variables en los parámetros de la función para asegurarse de que solo se incluyan operaciones legales y no verificar los parámetros de nombre de ruta/. recorrido de directorio.
(*) No utilice parámetros pasados desde fuera directamente como nombres de archivos.
(*) Limite las operaciones de apertura de archivos a directorios fijos y prohíba que los nombres de archivos contengan rutas. Establezca permisos de acceso correctos para los archivos en el servidor web. Verifique los problemas de administración de sesiones de nombres de archivos.
(*) Utilice contenido que sea difícil de adivinar como ID de sesión
(*) No guarde el ID de sesión en la URL
(*) Establecer el atributo seguro para las cookies utilizadas en el protocolo https
(*) Generar una nueva sesión después de iniciar sesión exitosamente
(*) Después de iniciar sesión correctamente, genere información secreta además del ID de sesión y verifíquela cada vez que visite la página. No utilice un valor fijo como ID de sesión.
Al guardar el ID de sesión en una cookie, establezca la fecha de vencimiento Ataque de secuencias de comandos entre sitios (XSS)
Solución cuando no se permite ingresar contenido HTML
(*) Todo lo que se envíe a la página debe tener carácter de escape.
(*) Solo se permiten URL que comiencen con "http://" o "https://" al generar URL
(*) No generar dinámicamente contenido <script>…</script>
(*) No lea la hoja de estilo de un sitio web externo Solución para verificar el contenido de entrada cuando se permite ingresar contenido HTML.
(*) Analice el contenido HTML de entrada, genere un árbol de análisis y luego extraiga las partes que no sean script. Utilice scripts para eliminar cadenas relevantes en el contenido HTML de entrada.
(*) Vuelva a especificar el atributo charset de Content-Type en el encabezado HTTP de la respuesta. Para evitar la filtración de información de cookies, el método Trace debe estar deshabilitado y el atributo HttpOnly debe configurarse para todas las cookies para la falsificación de solicitudes entre sitios. (CSRF)
(*) Se accede a todas las páginas a través de POST. Se genera aleatoriamente una información en la parte oculta de la página anterior. La página después del envío verifica la información y la ejecuta solo si es correcta.
(*) Requerir contraseña nuevamente antes de ejecutar negocios
(*) Confirme si el Referer es correcto Solo cuando sea correcto, realice operaciones importantes y envíe un correo electrónico a la dirección de correo electrónico preestablecida.
Inyección de encabezado HTTP
(*) No genere encabezados HTTP directamente, utilice la API de salida de información de encabezado proporcionada por el entorno en ejecución
(*) Cuando no se puede utilizar la API, se deben prohibir los saltos de línea en la información del encabezado de entrada. Se deben eliminar los saltos de línea en todas las entradas externas. El robo de correo electrónico (utilizando algún medio para enviar correos electrónicos a la dirección especificada por el atacante).
(*) No utilice parámetros externos como información del encabezado del correo electrónico. Cuando deba utilizar parámetros externos para configurar la información del encabezado, elimine los caracteres peligrosos.
Declaración de derechos de autor: puede reimprimir cuando lo desee, pero se debe citar al autor original, Charlee, al realizar la reimpresión.
Enlace original: http://tech.idv2.com/2008/04/19/secure-website-checklist/
Referencia de estrategia de aplicación específica: Lista de verificación de seguridad de práctica de PHP