¿Cómo detectar XSS en las etiquetas HTML? [cerrado]

1

Soy un principiante que está tratando de entender XSS. Quiero crear mi propio sitio y tengo mucha curiosidad sobre cómo detectar si alguna de las etiquetas HTML es vulnerable a XSS (como si las etiquetas <src> o <a> ).

A continuación se muestra un ejemplo de bloque HTML que me gustaría probar:

<a href="javascript:s=document.createElement('script');s.src='http://localhost/s.js';document.body.appendChild(s);window.location='http://www.google.com/'">click</a>

¿Debo guardar este código como index.html y ejecutarlo localmente con un servidor Apache para detectar XSS?

    
pregunta user183535 03.08.2018 - 23:08
fuente

1 respuesta

1

XSS generalmente afecta las ubicaciones donde un usuario puede escribir una entrada, es decir. campos de comentarios, entradas de nombre de usuario / contraseña, incluso la url puede ser susceptible a XSS.

Hay dos tipos main de XSS, reflexivos y persistentes. Reflective afecta al usuario que escribió los comandos y persistente afecta a cualquiera que visite esa página. Ambos son iguales, excepto por el hecho de que las necesidades persistentes deben almacenarse en algún lugar del servidor; en un campo de comentarios es común, para que otros usuarios puedan cargarlas cuando visiten la página.

Lo mejor que puede hacer es crear algún tipo de validación de entrada que elimine todos los caracteres especiales o cualquier otro tipo de carácter que no desee en su sitio. Los regex son un método común y simple para eliminar y sanear los comentarios de los usuarios. Escribiré un código a continuación en PHP que puedes usar para sanear la entrada:

Método 1

<?php
    function clean($string)
    {
        $string = str_replace(' ', '-', $string);
        $string = preg_replace('/[^A-Za-z0-9\-]/, '', $string);
        return preg_replace('/-+/', '-', $string)
    }
?>

Método 2

PHP ha incorporado funciones que puede usar para sanear la entrada también.

if (isset($_POST['submit']))) {
    $sanitized_input = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_ENCODED, FILTER_FLAG_STRIP_HIGH);
}

En cuanto a las pruebas de si la página aún es vulnerable, normalmente utilizo un servidor WAMP / LAMP y solo ejecuto la página localmente, ya que es el método más fácil y rápido para realizar pruebas y validaciones rápidas (para mí).

Si desea obtener más información sobre este tema, deje un comentario a continuación y puedo vincularlo para leerlo o responder cualquier otra pregunta que tenga.

    
respondido por el Connor J 04.08.2018 - 11:24
fuente

Lea otras preguntas en las etiquetas