Tecnología

Inicio

Cómo desinfectar datos para XSS PHP

XSS es una vulnerabilidad de seguridad en aplicaciones Web que es explotada por los hackers para obtener acceso a la información personal de un usuario, para hacerse pasar por otro usuario o para obtener acceso a un servidor Web con privilegios elevados. Creados precauciones para sus programas de PHP para desinfectar la entrada del usuario para evitar ataques XSS.

Instrucciones

1 Utilice la función "htmlspecialchars" para desinfectar entrada externa en la que podría permitir que el formato HTML en la entrada. Llame a la función de reemplazar el "menor que" y "mayor que" los signos con los códigos HTML "& lt;" y "& gt;" para frustrar un intento de inyectar un script malicioso con la etiqueta "<script>". Por ejemplo:

htmlspecialchars de eco ($ userinput);

2 Insertar la función "striptags" para eliminar las etiquetas HTML, donde no se permitiría el formato HTML. No utilice "striptags" en los casos en que se permitiría a los usos legítimos del HTML, o puede conducir a la pérdida de datos. Por ejemplo:

echo "No se puede iniciar sesión con el nombre de usuario". striptags ($ _ GET [ 'nombre de usuario']); // Ningún código HTML permitido en un nombre de usuario

3 Utilice comillas dobles para rodear los atributos HTML que implican la entrada del usuario. Pasar el parámetro "ENT_QUOTES" para la función "htmlspecialchars". Esto proporciona una protección adicional contra los ataques que exploten la inyección de código en atributos HTML que utilizan una sola vez de comillas dobles. Por ejemplo:

<img src = "loaded.png" alt = "<? php echo htmlspecialchars ($ USER_DESCRIPTION, ENT_QUOTES);?>" />

<img src = "loaded.png" alt = "<? php echo htmlspecialchars ($

descripción del usuario);?>" />

4 Llame a la función "urlencode" para una máxima protección en la desinfección de datos que puede aparecer como un atributo HTML. Se necesita un enfoque más agresivo para convertir caracteres potencialmente dañinos. Por ejemplo:

<Input type = "text" value = "<? Php echo urlencode ($ user_input);?>" />

5 Utilizar la función "mysqlrealescapestring" para filtrar los datos antes de utilizarla en operaciones de base de datos con la extensión "mysql" para evitar ataques de inyección SQL. Por ejemplo:

$ Query = "SELECT * FROM de datos donde usercriteria =" 'mysqlrealescapestring ($ usercriteria).' ". ';

6 Utilice la extensión "mysqli" en lugar de "mysql", junto con declaraciones preparadas para tener la entrada de usuario de la extensión de escape para usted y prevenir ataques de inyección SQL. Por ejemplo:

$ Stmt = $ mysqli-> prepare ( "SELECT * FROM de datos donde usercriteria =?");
$ Stmt-> bind_param ( 's', $ usercriteria);
$ Stmt-> execute ();