Miten voin estää XSS hyökkäykset? Nyt tarvitsen pikaista neuvoa, nimittäin tuota tehdään nyt sivulleni jatkuvasti ja nyt pitäisi saada estettyä se. Kiitos. :)
Helppo ratkaisu on muuttaa vaaralliset syötteet vaikkapa htmlspecialchars funktiolla. Tarkempi vastaus vaatii tarkempaa tietoa esimerkiksi koodia esille.
Kyseessä on itse tehty foorumi johon teksti kenttään syötetään noita koodeja. javascripti pohjaisia. Mietin vain, että auttaako jos joku kirjoittaa sinne <script> niin siitä eteenpäin kaikki on tyhjää niin kauan, että tulee </script>?
Eikö kuitenkin olisi varminta luottaa ammattilaisen tekemään funktioon, kuin tehdä oma versio. Esimerkiksi tällaisella funktiolla voisi siivoilla noita käyttäjien syötteitä.
<?php function siivoa_syote($syote){ $syote = get_magic_quotes_gpc() ? $syote : mysql_real_escape_string($syote); $syote = strip_tags($syote); $syote = htmlspecialchars($syote); $syote = trim($syote); return $syote; }
Teuron mainitsema funktio htmlspecialchars riittää.
XSS-aukollinen viestin tulostus:
echo $viesti;
Korjattu viestin tulostus:
echo htmlspecialchars($viesti);
Funktio htmlspecialchars muuttaa viestiä niin, että selain ei käsittele siinä olevia HTML-tageja vaan ne ilmestyvät tavallisesti sivulle. Esimerkiksi jos viestissä lukee "<script>", funktio muuttaa sen muotoon "<script>", jossa "<" ja ">" vastaavat merkkejä "<" ja ">". Tämän seurauksena sivulla näkyy teksti "<script>" eikä JavaScript-koodia suoriteta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.