XSS sta funzionando nel mio URL. Come lo fermo?

-1

Quindi il mio URL ha il seguente aspetto:

www.example.com/id?=15

Il mio HTML è questa parte:

<form action="id?=$someidnum"> </form>

Quando faccio questo al mio URL:

www.example.com/id?=15"onclick="alert();"

e clicca sulla mia pagina funziona. Ho fatto ricerche su XSS e sono stato in grado di proteggermi dalle forme di testo e simili. Tuttavia, come posso impedire che provenga dall'URL?

Uso PHP come lingua serveride.

    
posta apples 21.05.2017 - 22:51
fonte

3 risposte

3

Esattamente allo stesso modo di tutti gli altri input: rigorosa convalida dell'input e corretta escaping dell'input quando viene restituito all'eco.

Per essere un po 'educato, penso che dovresti leggere il OWASP top 10 . Vedo una vulnerabilità di enumerazione in agguato proprio lì con l'ID presumibilmente auto-incrementante

    
risposta data 21.05.2017 - 22:55
fonte
1

how do I prevent it coming from the url?

Non importa quale sia la fonte. Il lavandino conta.

Nel tuo caso il sink è un attributo double-quoted. Un valore fornito dall'utente può essere stampato in modo sicuro in un attributo HTML con doppia virgoletta tramite HTML che sfugge a tutte le doppie virgolette. Quindi, lo snippet sarebbe sicuro sostituendo tutte le occorrenze di " con &quot; nella variabile $someidnum .

In PHP puoi semplicemente passare la variabile attraverso htmlspecialchars() che per default codifica < , > , & e " .

    
risposta data 21.05.2017 - 23:02
fonte
1

Prevenire l'XSS è fatto sul lato server. Ci sono un sacco di funzioni incorporate in PHP per filtrare le variabili contro XSS, una di queste è htmlentities() .

Evita anche di inserire variabili in action="" nei moduli. un modo che puoi fare è:

<form action="#"> </form>
    
risposta data 21.05.2017 - 22:58
fonte

Leggi altre domande sui tag