Descriere: JSLR - biblioteca Javascript ce este inceputul sfarsitului vulnerabilitatilor XSS
Download:
Autor: Anonim
Sursa (Link-ul oficial): Propria parere: Folositor.
Tutorialul:
JSLR, termen derivat din ASLR (Address space layout randomization) este o abordare ce presupune randomizarea unor tag-uri și atribute astfel încât atacatorul să nu poate injecta cod HTML/Javascript malițios fără să știe token-ul generat. Este foarte ușor de implementat pentru că orice website poate fi rescris, adăugând un id ce confirmă validitatea tag-ului. De asemenea, o procedură similară trebuie folosită și pentru atributele tagurilor.
Biblioteca interceptează codul HTML înainte de a fi randat de browser, folosind un element plaintext, DOM-ul este folosit pentru a crea o copie a HTML-ului înainte de a adăuga codul înapoi. Se activează JSLR pentru a verifica integritatea fiecărui atribut și tag.
Exemplu de fișier protejat de JSLR
Este foarte important să adaugi X-Frame-Options și X-XSS-Protection: 1;mode=block pentru a fi siguri că atacatorul nu modifică comportamentul bibliotecii JSLR.
Cod: Selectaţi tot
<?php
require('jslr.inc.php');
$JSLR = new JSLR;
?>
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>JSLR</title>
<script src="<?php $JSLR->getWebPath()?>jslr.js" type="text/javascript"></script>
<script type="text/javascript">
try {
JSLR=JSLR('<?php $JSLR->getID()?>','<?php $JSLR->getSingleQuoteID()?>','<?php echo $JSLR->doubleQuote?>');
} catch(e) {
document.write('<plaintext>Error unable to find JSLR. Check the web path.');
}
</script>
</head>
<body>
<iframe <?php $JSLR->getID()?>_src="http://www.microsoft.com/"></iframe>
</body>
</html>În varianta existentă, JSLR poate rula doar în browserele moderne, orice browser ce nu suportă evenimentul DOMContentLoaded nu va putea rula, dar această limitare va fi scoasă pe parcurs iar JSLR va putea fi folosit pentru orice browser până la IE6. Evident, că browserele trebuie să ofere libertatea ca biblioteca să aibă acces complet asupra DOM-ului. De asemenea, orice injecție deasupra scriptului JSLR va face bypass la protecție pentru că vectorul va fi randat înainte că JSLR să apuce să-l protejeze.
