XSS , a saber (Cross Site Scripting) los ataques de cross-site scripting
XSS Tipo de vulnerabilidad:
reflectante (no persistente): utiliza principalmente para el código malicioso al parámetro de URL, el cliente utilizado para robar información de las cookies y phishing.
Tipo de almacenamiento (duradero): el código malicioso atacante en el servidor Web y guardado, será atacado, siempre que el acceso de los clientes a la página correspondiente.
Tipo de DOM: Dom incluye el uso de un navegador, el navegador no realizar, sino mediante la solicitud de modificar o robar información local a nivel local directamente.
Ahora comenzamos a ejercicios de reflexión XSS
Bajo
fuente:
array_key_exists () función comprueba si existe la clave especificada en el nombre de una matriz, devuelve verdadero si existe el nombre de clave, si la clave no existe devuelve false. Aquí llamado clave de nombre
Se puede ver, por código de bajo nivel justo para determinar si el parámetro de nombre está vacío, si no está vacío, luego imprimirlo directamente, y no hicieron ningún tipo de filtrado e inspección del parámetro de nombre, existe una vulnerabilidad XSS muy obvio
Entramos en la <script> alert ( 'piratear') </ script> directamente realizado nuestro código js
Medio
fuente:
Aquí, la función str_replace () sólo el "<script>" para hacer un filtro, (función str_replace () no es perfecta, porque es entre mayúsculas y minúsculas)
Pero el doble de escritura, el capital todavía se puede escribir,
Nos puede directamente derivación de la capital
Entramos en la <script> alert ( 'piratear') </ script>, se realizó código directamente js
Ahora duplicar la carretera de circunvalación
Filtrado de código:
= Nombre str_replace $ ( '<Script>', '', $ _GET [ 'nombre']), <Script> filtrada interceptado ;
1, el Cuál es su caja de entrada de nombre,?: <Script> Alerta (123) </ script>
Una vez presentado, el navegador no pop pop que esperábamos, el contenido de alerta pantalla, por el contrario, directamente a la "alerta (123)" como el nombre aparece, indicando str_replace () Función aquí para entrar en vigor:
2, trate después del ataque, el nombre en el cuadro de entrada ¿Cuál es su entrada ?:
<Sc <script> ript> alert ( "Si usted puede ver, lo que indica un ataque exitoso") </ script>
Principio: Aquí, la función str_replace () sólo el "<script>" para hacer un filtro,
Alto
fuente:
Puede ser visto, el uso de un código de alto nivel directamente a la expresión regular <* s * c * r * i * p * t al filtro, y * representa uno o más de cualquier carácter, representantes I mayúsculas y minúsculas. Por lo tanto, nuestra etiqueta <script> no se puede utilizar aquí.
Pero podemos inyectar código malicioso a través de JS img src, el cuerpo y los eventos o etiquetas iframe y otras etiquetas de otra .
Imposible
fuente:
htmlspecialchars (string): el carácter predefinido "<" (menor que), ">" (mayor que), y, '', '' se convierte en entidades HTML, lo que impide el navegador como un elemento HTML
Si al entrar en el <script> alert ( 'piratear') </ script>, ya que la función htmlspecialchars va a convertir en entidades HTML y llevado $ {nombre} es un valor <y> $ nombre, y luego encerrado en <pre> </ pre> etiqueta se imprime, por lo que inserto no se ejecutan las instrucciones.
Como puede verse, código de nivel imposible determinar si el nombre está vacío, las palabras no vacías y compruebe que manera, para protegerse contra los ataques CSRF. A continuación, utilizar la función htmlspecialchars para convertir el nombre de los personajes predefinidos en entidades HTML, evitando de este modo a llenar en la etiqueta