Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: XSS

mika132 [26.12.2009 18:56:13]

#

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. :)

Teuro [26.12.2009 18:57:50]

#

Helppo ratkaisu on muuttaa vaaralliset syötteet vaikkapa htmlspecialchars funktiolla. Tarkempi vastaus vaatii tarkempaa tietoa esimerkiksi koodia esille.

mika132 [26.12.2009 19:02:07]

#

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>?

Teuro [26.12.2009 19:36:57]

#

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;
}

Antti Laaksonen [26.12.2009 20:14:05]

#

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 "&lt;script&gt;", jossa "&lt;" ja "&gt;" vastaavat merkkejä "<" ja ">". Tämän seurauksena sivulla näkyy teksti "<script>" eikä JavaScript-koodia suoriteta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta