node all javascript regex security jslint

javascript - all - Objetivo de la opción "no permitir inseguridad en expresiones regulares" de JSLint



node js regex (2)

"Inseguro" significa "no específico" en este contexto. Tanto el punto . y el rango exclusivo [^…] no define claramente qué debería corresponderse con la expresión regular. Con fines de validación, esto puede suponer el riesgo de coincidir con éxito cosas que usted no pensó y no quiere (piénselo: lista blanca vs. lista negra).

En cualquier caso, el punto y el rango exclusivo son partes válidas de una expresión regular, y si hacen lo que necesitas (como en este caso), pensaría en la advertencia como demasiado cautelosa.

Un usuario malintencionado puede jugar con la lógica de su página en cualquier momento; la advertencia es más sobre el funcionamiento regular de la página.

Tengo una línea de código que obtiene el siguiente error cuando se ejecuta a través de JSLint:

Lint at line 604 character 48: Insecure ''^''. numExp = parseInt(val[1].replace(/[^/-+/d]/g, ""), 10);

Este error parece referirse a la siguiente descripción de la página de opciones de JSLint:

"true if . and [^...] should not be allowed in RegExp literals. These forms should not be used when validating in secure applications."

No entiendo muy bien cómo una aplicación javascript del lado del cliente realmente puede considerarse segura. Incluso con la expresión regular más hermética, todavía es posible disparar algo como Firebug y cambiar la variable de todos modos. La validación de entrada real debe hacerse en el servidor, y el navegador del cliente probablemente se quede con la validación que manejará el abuso de su usuario promedio.

¿Es seguro ignorar este error? ¿Me falta un ángulo aquí donde mi aplicación será insegura debido a la validación de entrada del lado del cliente?


Todo lo que intenta decirte es que generalmente es mejor especificar qué se puede ingresar en lugar de qué no .

En este caso, tu expresión regular está eliminando los caracteres incorrectos, por lo que es seguro ignorar la advertencia.