¿Qué amenazas de seguridad existen para los desarrolladores web front-end? ¿Cómo se previenen?

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.

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.

Lo único de lo que debe preocuparse en el lado del cliente es la validación de formularios .

Las “amenazas de seguridad” son amenazas cuando están en su computadora (servidor), no en los clientes, por lo que la prevención real debe hacerse en el back-end. Sin embargo, lo que puede hacer es evitar que datos no válidos o amenazas potenciales lleguen a su servidor, lo que simplemente se describe como validación de formulario.

La implementación puede variar, pero la regla general es ser lo más específica (implacable) posible sin costar usabilidad / UX. También tenga en cuenta que una persona educada siempre encontrará formas de eludir / anular / romper su protección del lado del cliente, por lo que el gran problema siempre está del lado del servidor.

Todas sus respuestas hasta ahora suponen que no está utilizando un sitio especialmente diseñado. Las vulnerabilidades recientes descubiertas en WordPress deberían alarmar a cualquiera que use ese CMS en particular. Todos los sistemas de gestión de contactos deben confiar en el camino a muchos desarrolladores diferentes que no cooperan para su seguridad. Una de las razones por las que promociono sitios web independientes de los que solo uno o dos desarrolladores son responsables.

Cualquiera que tenga un sitio simple de WordPress vainilla es relativamente seguro y aburrido. Dale vida a cualquiera de los cientos de plantillas para ello y también necesitas seguridad de la que no eres directamente responsable, pero que se puede culpar por cualquier pirateo.

Debe tener en cuenta que “… Se estima que millones de sitios han sido pirateados utilizando un exploit particular de wordpress / php porque TimThumb está incluido en muchos complementos de WordPress …”

Simplemente haga una búsqueda de ‘vulnerabilidad de WordPress’ y asegúrese de verificar la fecha del resultado. Apenas pasa un mes sin que se encuentre un nuevo truco para ese CMS.

Joomla es más seguro pero también tiene plantillas más caras ya menudo más difíciles de usar. Entonces, antes de que alguien pueda brindarle información valiosa sobre seguridad, debe ser mucho más descriptivo sobre su software y la plataforma de alojamiento en la que se encuentra. Si no lo sabes, descúbrelo.

Toda persona que use una contraseña basada en el nombre de su primer hijo o el nombre de su mascota es un riesgo de seguridad. Cual es tu contraseña ¿Tiene números, caracteres, letras mayúsculas y minúsculas y tiene más de 16 caracteres?

La persona que instaló el CMS (si el sitio está ejecutando uno) podría haber creado un problema de seguridad sin darse cuenta mediante el uso de una contraseña simple para el usuario ‘root’ de MYSQL. Aunque puede culpar a alguien más por ser pirateado, no cambia el problema de ‘seguridad de front-end’ en el que nos pidió que lo asesoremos.

La información de seguridad general está en todas partes. Es difícil obtener información específica cuando oculta incluso el nombre del software que está utilizando o planea utilizar. Angular es solo una aplicación para hacer que un sitio responda, pero también necesita otras aplicaciones para funcionar correctamente.

La única preocupación en el front end son los datos del formulario. Cualquier formulario expuesto al público debe tener datos específicos del tipo (un campo de número solo puede aceptar un número, los campos de correo electrónico y teléfono se validan como direcciones de correo electrónico y números de teléfono, etc.). No permita que un usuario envíe un formulario sin datos válidos.

También deberían estar haciendo una validación similar en el back-end, brindando dos capas de protección contra ataques de inyección SQL. También deben requerir una devolución de datos del formulario para procesar el formulario e ignorar todas las solicitudes de obtención o solicitudes de otros dominios. Es posible que también quieran verificar los encabezados de cualquier publicación para asegurarse de que tengan versiones razonables del navegador (asegúrese de que no diga “curl” en el encabezado del navegador, etc.). Hay muchas pistas obvias para la mayoría de los tipos de ataques que se pueden filtrar con bastante facilidad, lo que lo cubrirá para el 99% de los ataques.

Se puede usar un script de desglose de cuadros si cree que los datos detrás de la aplicación son importantes o lo suficientemente valiosos como para realmente hacer un esfuerzo adicional por la seguridad. Pero rara vez lo hago, incluso para sitios que requieren el cumplimiento de HIPAA.

Eche un vistazo al directorio de los 10 principales de OWASP ( https://www.owasp.org/index.php/ …) para ver las amenazas de seguridad contra las que debe protegerse.

Para evitarlos, desarrolle el software correctamente y tenga una o más contramedidas de seguridad que protejan contra cada amenaza / ataque (s).

Un buen lugar para comenzar es comprender y protegerse contra:

  1. Ataques de inyección SQL
  2. CSRF – Falsificación de solicitud de sitios cruzados
  3. XSS: secuencias de comandos de sitios cruzados

Si tiene una buena separación entre la interfaz de usuario y la lógica empresarial, muchas de las contramedidas de seguridad pueden codificarse en la capa API de servicios empresariales. Esto disminuye la necesidad de que los desarrolladores front-end comprendan estas amenazas de seguridad.

desinfectar entradas de formulario antes de la ejecución.
¿No se especificaron los requisitos de seguridad en los requisitos doc ?.
seguridad y privacidad de las aplicaciones web compatibles con hipaa