Hirdetés

Új hozzászólás Aktív témák

  • Taci

    addikt

    válasz Taci #20790 üzenetére

    Amúgy ajánlják ezt a fajta megközelítést is:

    Another good prevention method is user’s input filtering. The idea of the filtering is to search for risky keywords in the user’s input and remove them or replace them by empty strings.
    Those keywords may be:
    <script></script> tags
    Javascript commands
    HTML markup

    Ártani mindenesetre nem fog.

    Ezt le tudom kezelni:
    $link = "%3cScriPt%3ealert('Hacked!')%3c/script%3e";
    (<ScriPt>alert('Hacked!')</script>)
    mert először is visszaalakítom:
    $link_urldecode = urldecode($link);
    aztán máris működik rá a keresés:
    $dirty_content = "<script>";
    if (stripos($link_urldecode, $dirty_content) !== FALSE){
        echo "XSS-találat: " . htmlspecialchars($dirty_content);
    }

    Ezt viszont továbbra sem tudom visszaalakítani:
    $link = "j&#X41vascript:alert('Hacked!')"; (jAvascript:alert('Hacked!'))
    Se az urldecode(), se a htmlspecialchars_decode(), se a html_entity_decode() nem alakítja át ezt: &#X41 ezzé: A.

    Ez alapján ez HEX. Jó lehetne az urldecode() ide is, de az csak az \X41-re ugrik be, a &#X41-re nem.

    Nem foglalkoznék ez utóbbi esettel, csak hát ha az adatbázisban az egyik bejegyzés linkjét kicserélem erre j&#X41vascript:alert('Hacked!'), akkor bizony kattintás után egyből látszik, hogy ha a böngésző nem fogná meg (about:blank#blocked), akkor futna, tehát valid kód.

Új hozzászólás Aktív témák