Autor Zpráva
cocroach
Profil *
ahoj, když napíšu toto
http://localhost/balls.php?name=%3Cscript%3Ealert(%27njected%27)%3C/script%3E

...ted když se na to dívám... tamto nahoře jsme zkopíroval z prohlížeče tak tam sou procenta ale napsal jsem tam toto:
http://localhost/balls.php?name=<script>alert('injected')</script>
.. chtěl jsem se zeptat proč mi nevyskočilo javascriptové okno, ale to je asi tím že prohlížeč zakodoval nebezpečné znaky?
JetamCZ
Profil
Je tomu tak, že se jedná ochranu proti xss. Je to hlavně z důvodu bezpečnosti. Pokud se chceš dozvědět více o této problematice doporučuji přednášky od Michala Špačka o XSS a webové bezpečnosti. Jinak určitě uvidíš důvod zablokování v konzoli prohlížeče (F12).

řešením je posílat třeba v url balls.php?script=1 a pak řešit pomocí php
<?php
    if($_GET['script']==1){
        echo "<script>alert('injected')</script>";
    }
?>
Keeehi
Profil
O ochranu proti xss se nejedná. To, proč to prohlížeč přepíše je z důvodu, že tam jsou znaky, které v URL být nemůžou. A aby bylo možné tyto znaky dostat na server, je potřeba je zakódovat. Nicméně server si to zase dekóduje, takže se k němu dostane to, co jsi původně napsal.
To, proč ti to nefunguje je kvůli tomu, že tímto způsobem se javascriptu nespouští. To že část URL by se dala interpretovat jako javascript prohlížeč nezajímá. Nemá jediný důvod prohledávat URL a něco v ní spouštět. Samotná URL tedy nestačí.
Je potřeba, aby se tebou zadaný vstup objevil na stránce. Tedy aby tomu pomohlo PHP. V balls.php musíš mít někde
echo $_GET['name'];
Takto se ten tvůj kód dostane do HTML a tam už se může spustit. Když to pustíš v nějakém starším prohlížeči, tak by to mělo fungovat. Některé novější prohlížeče to však spustit nemusí. Jedním z důvodů mohou být CSP hlavičky, pomocí kterých se dá zakázat spouštění inline javascriptu. Ty by SIS však musel sám na localhostu nastavit. Což jsi pravděpodobně neudělal, takže inline javascriptu se blokovat nebude.
Ovšem novější Chrome má XSS auditor (jiné prohlížeče mají něco podobného) který zkoumá URL adresu a pokud v ní je něco podobného javascriptu a něco takového se objeví i na stránce, pak takový obsah nepustí.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: