SQL Injection e JavaScript Regex Bypass

0

me per l'apprendimento di SQLI. Ma mi sono bloccato a questa regex che sembra essere indistruttibile:

document.loginForm.username.value = document.loginForm.username.value.replace (/ [^ a-zA-Z0-9] / g, "");

Se qualcuno potesse darmi qualche suggerimento su questo? :)

Grazie

    
posta Asak 15.04.2014 - 12:34
fonte

2 risposte

2

Disattiva il tuo javascript.

Se stai usando FireFox: Vai a "about: config" quindi "javascript.enabled" impostato su "false"

Se hai solo bisogno di rimuovere determinati javascript mentre ti affidi all'altro javascript installa FireBug e rimuovi il codice che non vuoi.

    
risposta data 15.04.2014 - 12:56
fonte
1

Mentre la risposta precedente spiega come fare questo, poiché questo sembra essere un problema di dimostrazione, è probabilmente utile dare qualche spiegazione in più sul perché funziona.

Questo esempio sembra essere una dimostrazione della debolezza del codice lato client. Nelle reti pubbliche, come Internet, i computer client non sono quasi mai considerati affidabili. Non sai se sono un utente malintenzionato o un utente legittimo e anche quando un utente legittimo non sa se potrebbero essere infettati da malware che concedono a un utente malintenzionato l'accesso condiviso al proprio sistema.

Come tale, qualsiasi sicurezza che si spinge "lato client" e dipende dal comportamento del client per il bene si rompono facilmente. In questo caso, il filtraggio degli input è stato eseguito lato client. Nel mondo reale, si vede spesso questo fatto per fornire una risposta più rapida se l'utente commette un errore. La convalida lato server è sicura, ma può essere eseguita solo quando il cliente decide di inviare informazioni. La verifica lato client può rilevare un problema in un modo e informare l'utente prima che perdano troppo tempo.

La convalida del lato client non è negativa per la funzionalità di usabilità, ma è importante ricordare che qualsiasi funzionalità lato client non fornisce una sicurezza aggiuntiva, se non significativa. Ad esempio, un numero di iterazioni di un hash delle password potrebbe essere fatto lato client, ma un utente malintenzionato potrebbe semplicemente presentare ipotesi che ignorano il processo di hashing sul client e indovinare direttamente l'input. Allo stesso modo, come dimostra questo problema, la convalida degli input da parte di Javascript può essere semplicemente eliminata completamente in un modo banale.

Tutta la convalida dei problemi di sicurezza dovrebbe sempre essere fatta nel codice fidato e con poche eccezioni, il codice fidato significa che è in esecuzione sul server per il quale si controlla l'hardware.

    
risposta data 15.04.2014 - 15:24
fonte

Leggi altre domande sui tag