On Sun, 2013-01-13 at 19:09 +0200, [email protected] wrote:

> Selamlar,
> Değerli hocam: Bu nasıl bi cevap dili?... Ne İsa'ya ne de Musa'ya göre
> olmuş... :)
> 
> Kolay gelsin,
> Mucip:)
> 
> 
> 13 Oca 2013 18:44 tarihinde "Atıf CEYLAN" <[email protected]>
> yazdı:
> 
>         On Sun, 2013-01-13 at 12:10 +0200, hasan sarman wrote:
>         
>         > function Safety($string) {
>         > $string = stripslashes($string);
>         > $string = strip_tags($string);
>         > $string = mysql_real_escape_string($string);
>         > return $string;
>         > } 
>         
>         stripslashes, addslashes olacak ancak artik escape yontemi
>         kullanilmiyor. Bu nedenle addslashes deprecated bir fonksiyon.
>         Ayrica escape bazi injectionlara neden oluyor. 
>         strip_tags ise injectionla ilgisi yok. Zira html taglari
>         silmeye yariyor. 
>         -- 
>         M.Atıf CEYLAN
>         Yurdum Yazılım

Valla 2 gundur uzerinize afiyet biraz grip ve neticesinde de biraz garip oldum.

Ama merak etmeyin okuyunca kendime yuh demeyi ihmal etmedim. 

Ornekteki stripslashes amacina uygun degil. Zira bu \ yani escape
(kacis) karakterlerini temizler. Eskiden veritabanlarina, ozel
karakterleri eklemek istedigimizde (',\,\n,\t vb.) addslashes yapardik.
Bunun neticesi soyle olurdur,
misal ' ekleyecegiz ya da \ , addslashes fonksiyonu kullanildiginda
sonuc \' veya \\ gibi olurdu. Bu yontem ise bazi hex verilerde i$e
yaramadigindan injectionlara neden oluyordu. 

Veritabanlari uzun zamandan beri injection onlemek icin kendi client
api'lerine birer fonksiyon eklediler. (gerci mysql once
mysql_escape_string sonra da mysql_real_escape_string yapti. Yanlis
hatirlamiyorsam yukaridaki bahsettigimiz multi-byte kodlar nedeni ile.
Hakiki Koç, Öz Urfa tarzinda real escape dedi :P ) 
Bu nedenle artik addslashes kullanilmiyor hatta bunu gonderince
PostgreSQL artik size kiziyor. Fi tarihinden mi kaldin diye.

El-hasil kullanilacaksa bile stripslashes degil addslashes olmaliydi
demek istemistim. 

strip_tags ise soyle bir ise yariyor:

echo
strip_tags('<table><tr><td><strong>hucre</strong></td></tr></table>') //
output  hucre
yani html taglari siliyor. Bunun da sql injectionla bir ilgisi
bulunmuyor.

Kolay gelsin,


-- 
M.Atıf CEYLAN
Yurdum Yazılım
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap