Dado que se trata de un problema de hace algunos años, algunas cosas cambian y los enlaces externos generalmente se pliegan, ya que los sitios no mantienen o abordan los enlaces que pueden existir en otros sitios.
Pasando a continuación, PHP se ha movido un poco y mucha gente pregunta acerca de las entradas de desinfección, pero hasta ahora, el uso de filter_var
es escaso en el terreno, aunque no es perfecto, es mi lectura, seguro binario.
Así que obtienes una dirección de correo electrónico, bueno, a menos que no uses HTML5 cuando deberías usarlo junto con PHP filter_var
, tu sitio será más seguro que alguien que escribe una rutina para sanear una entrada que no lo hace. t utilizar entradas HTML5. Escribir código para compatibilidad con versiones anteriores para navegadores que no son compatibles con HTML5 es completamente inútil y una pérdida de tiempo y recursos.
El otro problema de la seguridad es que los valores de $ _GET y $ _POST son volátiles y pueden cambiarse o cambiarse externamente de datos buenos a datos incorrectos, por lo tanto, cualquier rutina de desinfección que los use y les devuelva las entradas limpias es simplemente maduro para los problemas ... $ _REQUEST La matriz es más segura, una vez que se establece en su matriz segura, no se puede cambiar, por lo tanto, rellene su matriz segura tomando entradas y amp; filter_varlos en la matriz segura.
La forma en que desinfecto las entradas es algo como lo que sigue ...
$someSafeArray = array(
"thefield"=>FILTER_SANITIZE_STRING,
"theNumberfield"=>FILTER_SANITIZE_NUMBER,
"theEmailfield"=>FILTER_SANITIZE_EMAIL
);
foreach( $someSafeArray as $fld=>&$val)
$val = filter_var( trim( $_REQUEST[$fld] ), $val );
Así que esto devolverá todos los campos (de las claves) y las entradas saneadas se colocarán en los valores de esas claves en la matriz segura.
Esto significa que uso las teclas de una lista blanca (matriz) para tomar SOLAMENTE las entradas que designo como campos válidos. Demasiada gente que he visto ofreciendo procesadores de formularios "dinámicos" que aceptan CUALQUIER entrada, ¡NO! Solo debe aceptar flujos de datos que su código / formulario está diseñado para manejar.
SALTE su página con un valor que su formulario de recepción pueda volver a calcular el hashing correcto para verificar que el servidor haya emitido su formulario, campos VACÍOS. Incluyo al menos un firld en blanco que es solo de lectura, oculto como campos de hashing pero la intención es para determinar si el formulario se está enviando o no, un bot llenará todos los campos con datos para intentar abrir la página.
SO Baiting tu página con un par de campos ficticios como ...
<input name="userlogin" type="hidden" value="" readonly />
<input name="empty" type="hidden" value="" readonly />
Si el formulario llegó a su servidor con algo en el campo de valor de cualquiera de las entradas, también puede detener el procesamiento de formularios y registrar la IP del usuario y bloquearlos, ya que son un bot o un pirata informático.
La inyección no es solo un problema de SQL, es un problema de la página PHP, así que tenga cuidado con los campos que acepta, con qué salt
y bait
de su formulario y opera una lista blanca.
DEJE DE USAR GET para pasar los parámetros de control, USE una cookie de sesión, ya que esto reduce las entradas en el script. Si utilizo una URL de tipo GET, entonces es solo para una táctica subversiva y permite el monitoreo de las variables que ingresan los usuarios en la URL. Y otras cosas para tratar de hackear.
He estado usando un proceso como este desde antes de que se introdujera la función filter_var, estaba sacando páginas sin la necesidad de una base de datos para validar las páginas entrantes y fue algo que los llamados profesionales me dijeron repetidamente que no era posible Bueno, lo único que tengo que decir es que "es si puedes pensar fuera de la placa de la caldera. (caja)" y lo suficientemente simple como para frustrar los intentos de pirateo, asegurar las páginas de formularios.