Keresés

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

  • Taci

    addikt

    válasz sztanozs #20787 üzenetére

    Arra gondoltam, megcsinálom azt, hogy szűröm az adott kontextusban rosszindulatúnak számító kifejezésekre, és ha van benne ilyen, akkor megpróbálom "tisztítani" (vagy simán csak skip, mert ha már "fertőzött", akkor valid tartalomrész amúgy sem nagyon lesz benne).

    Pl. ha kép linkjét várom, akkor abban nem lehet javascript, onerror, onfocus stb.

    Viszont mivel nem csak a
    javascript:alert('Hacked!')
    valid, hanem a
    j&#X41vascript:alert('Hacked!')
    is, ezért így gondoltam az ellenőrzés (egy részét) megcsinálni:

    if (stripos(htmlspecialchars_decode($linkToCheck), $dirty_content) !== FALSE){
       echo "XSS-találat!";
    }

    Ettől azt várnám, hogy ha
    $linkToCheck = "j&#X41vascript:alert('Hacked!')";
    akkor a htmlspecialchars_decode ezt visszaírja
    jAvascript:alert('Hacked!')-re,
    a stripos pedig mivel case insensitive, így ha arra keresek, hogy "javascript:"
    $dirty_content = "javascript:";
    akkor sikerül elkapni.

    De nem, a _decode nem, vagy nem úgy működik, ahogy várnám, és találatot itt továbbra is csak akkor ad, ha a speciális HTML entity-re keresek, pl.: j&#X41

    Mit rontok el?

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