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.