Come rilevare XSS sui tag HTML? [chiuso]

1

Sono un principiante che sta cercando di capire XSS. Voglio creare il mio sito e sono molto curioso di sapere se uno qualsiasi dei tag HTML è vulnerabile a XSS (come se fosse <src> o <a> tag).

Di seguito è riportato un blocco HTML di esempio che vorrei testare:

<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>

Devo salvare questo codice come index.html ed eseguirlo localmente con un server Apache per rilevare XSS?

    
posta user183535 03.08.2018 - 23:08
fonte

1 risposta

1

XSS di solito colpisce le posizioni in cui un utente può digitare input, es. campi di commento, voci di username / password, anche l'url può essere suscettibile di XSS.

Esistono due tipi principali di XSS, riflessivi e persistenti. Riflettente colpisce l'utente che ha digitato i comandi e persistente colpisce chiunque visiti quella pagina. Entrambe sono le stesse tranne per il fatto che il persistente deve essere memorizzato sul server da qualche parte, in un campo di commento è comune, in modo che possa essere caricato da altri utenti quando visitano la pagina.

La cosa migliore da fare è creare una sorta di convalida dell'input che rimuova tutti i caratteri speciali o qualsiasi altro tipo di carattere che non desideri sul tuo sito. Regex è un metodo semplice e comune per rimuovere e disinfettare i tuoi utenti. Scriverò del codice qui sotto in PHP che puoi usare per disinfettare l'input:

Metodo 1

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

Metodo 2

PHP ha incorporato funzioni che puoi usare anche per disinfettare l'input.

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

Per quanto riguarda il test di se la pagina è ancora vulnerabile, di solito faccio saltare un server WAMP / LAMP e semplicemente eseguo la pagina localmente, poiché è il metodo più semplice e veloce per test rapidi e validazione (per me).

Se vuoi qualche informazione in più su questo lascia un commento qui sotto e posso collegarti del materiale per ulteriori letture, o rispondere ad altre domande che hai.

    
risposta data 04.08.2018 - 11:24
fonte

Leggi altre domande sui tag