Los principales problemas de seguridad con los sitios web son la inyección de SQL y las secuencias de comandos entre sitios (la gestión de la contraseña también es un problema, pero supongo que no tiene que preocuparse por eso)
Algunas personas dirían que la validación de front-end es importante, lo es, pero no por motivos de seguridad. Validar el front-end es una pérdida de tiempo desde una perspectiva de seguridad porque un usuario malintencionado puede evitarlo y publicar directamente en el back-end. La validación de front-end es útil para tener una mejor experiencia de usuario, pero no detendrán ningún ataque, la validación de back-end es donde es esencial validar los datos por motivos de seguridad. Incluso entonces, debe buscar principalmente asegurarse de que los datos estén en el formato adecuado: las fechas son fechas, las int son int, las cadenas son cadenas, etc. Si hay datos que son absolutamente verificables, valídelos; si un campo no debería tener HTML, entonces quítelo.
Para evitar problemas de inyección SQL, asegúrese de que todas las consultas y las llamadas a consultas de procedimientos almacenados estén parametrizadas. Esto le dice a la base de datos que los datos entrantes contendrán información que probablemente no sea válida y que solo tome los datos tal como están, no analice la consulta como una cadena. Simplemente validar que los datos para evitar la inyección de SQL es una pérdida de tiempo peligrosa. Hay tantos casos extremos con inyección SQL que simplemente escapar de cadenas o buscar sentencias SQL comunes es un caso de rendimientos decrecientes. La parametrización es la ÚNICA manera de estar seguro.
- ¿Es cierto que los archivos de imagen pueden contener scripts incrustados y si el espectador abre la imagen, el código puede ejecutarse?
- ¿Cómo se infecta un JPEG con malware en iOS?
- ¿Es posible decirle a Avast antivirus que el archivo infectado solo debe detectarse pero no eliminarse?
- ¿Qué opina de la afirmación de la Agencia de Seguridad Nacional de los EE. UU. (NSA) de que frustraron un complot para destruir la economía de los EE. UU.
- ¿Cómo debo aprender a crear un antivirus?
Las secuencias de comandos de sitios cruzados son un poco más complicadas. Puede protegerse un poco utilizando políticas de seguridad de contenido. Cualquier JavaScript incrustado en su sitio debe tener un nonce que corresponda al csp en los encabezados de respuesta. El único problema es que csp realmente funciona con la mayoría de los navegadores todavía. En esos casos, su mejor opción es eliminar todas las etiquetas de script que la gente ingresa antes de agregarlas a la base de datos.
Además, TLS. Siempre encriptar.