Ben bir sistemi eğer fw kullanmadan yazıyorsam tüm routing işlemini
index.php üzerinden yapiyor ve diğer php dosyalarına direct access
vermiyorum. index.php'de $_POST, $_GET ve $_REQUEST global dizilerini
filtreliyorum şu şekilde;

function deep_escape_string($var){
         return (is_array($var)) ? array_map('deep_escape_string',$var) :
mysql_real_escape_string($var);
}

index'im içinde de
$_POST = deep_escape_string($_POST);
$_GET = deep_escape_string($_GET);
$_REQUEST = deep_escape_string($_REQUEST);

gibi kullanıyorum. Bence injection için bunun dışında bir önlem almaya
gerek yok. Dilerseniz hex sorgular için 0x'i gelen datanin içinden yok
ederek hexadecimal ifadeleri anlamlaştırabilirsiniz.


12 Ocak 2013 18:33 tarihinde Atıf CEYLAN <[email protected]> yazdı:

> **
> On Sat, 2013-01-12 at 17:21 +0200, Nuri AKMAN wrote:
>
> Arkadaşlar,
>
>
> http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php
>
>
>  Bu sayfada PHP'de SQL injection önlenmesi hususu tartışılıyor.
>
>
>  Herhangi bir framework kullanılmayan bir uygulama geliştirme ortamında
> siz nasıl bir fonksiyon önerirsiniz/kullanıyorsunuz?
>
>
>  Selamlar,
> Nuri Akman
>
>
> Temel olarak 1-2 yontemi var. Ya prepare statements kullanirsiniz, ya
> veritabanlarinin escape fonksiyonlarini veya tamsayi bir deger ise
> tamsayiya cast edersiniz.
> Bunun disinda beklenen veri belli ise if else kontrolleri de olur.
>
> Misal
>
> /?a=true
> if ($_GET['a'] == 'true')
> ....where field is true
>
> /?a=321
> $l_a = (int)$_GET['a'] //tamsayi disinda bir veri oldugunda 0 (sifir) cast
> edilir.
> ...where field=$l_a
>
> /?a=hebele
> $l_a = pg_escape_string($_GET['a']) veya pg_escape_bytea
> ...where field='$l_a'
>
> ya da php kullaniyorsaniz pdo ile ya da java ile prepare statements
> kullanarak.
>
>   --
> *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
>
>


-- 
Yunus Öksüz
90 530 876 38 48
_______________________________________________
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