﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>PHP ile Basit Sql İnjection önlemi yazısına yapılan yorumlar</title>
	<atom:link href="http://www.gurkanoluc.com/php-ile-basit-sql-injection-onlemi/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gurkanoluc.com/php-ile-basit-sql-injection-onlemi</link>
	<description>Azıcık Web, Azıcık Sohbet</description>
	<pubDate>Sun, 12 Oct 2008 11:47:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>gökhan bora tarafından</title>
		<link>http://www.gurkanoluc.com/php-ile-basit-sql-injection-onlemi#comment-1457</link>
		<dc:creator>gökhan bora</dc:creator>
		<pubDate>Wed, 26 Mar 2008 12:34:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.gurkanoluc.com/php-ile-basit-sql-injection-onlemi#comment-1457</guid>
		<description>son eklediğim fonksiyon şu şekilde olmalıydı. aynı sonucu döndürüyor ama daha az iş yapııyor.

function addescape($text) {
        if(get_magic_quotes_gpc()) {
                 $text = stripslashes($text);
        }
        $text = mysql_real_escape_string($text);
        return $text;
}</description>
		<content:encoded><![CDATA[<p>son eklediğim fonksiyon şu şekilde olmalıydı. aynı sonucu döndürüyor ama daha az iş yapııyor.</p>
<p>function addescape($text) {<br />
        if(get_magic_quotes_gpc()) {<br />
                 $text = stripslashes($text);<br />
        }<br />
        $text = mysql_real_escape_string($text);<br />
        return $text;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>gökhan bora tarafından</title>
		<link>http://www.gurkanoluc.com/php-ile-basit-sql-injection-onlemi#comment-1168</link>
		<dc:creator>gökhan bora</dc:creator>
		<pubDate>Wed, 02 Jan 2008 06:30:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.gurkanoluc.com/php-ile-basit-sql-injection-onlemi#comment-1168</guid>
		<description>yazdığınız fonksiyonda yanılmıyorsam bir hata var.
yazımda magic_quotes_gpc ye direk gpc diyeceğim. çünkü yazması dert.

şimdi gelen veri gpc açık ise slashlardan arındırılıyor. ama gpc kapalı ise slashlar ekleniyor.
amaç gpc nin durumunu kontrol ederek veriye slashlar eklemek. bu fonksiyon gpc nin açık veya kapalı olmasını kontrol edip her türlü durumda aynı sonucu döndürmeli. ama bu fonksiyon gpc durumunun farklı olduğu sunucularda farklı sonuçlar dönderecektir. buda sunucu sahibinib gpc yi değiştirmesi durumunda aksaklıklara neden olacaktır.

şöyle yapılabilirdi. mantığı şu yani: eğer gpc açık ise veriye slashlar eklenmiştir zaten. eğer kapalı ise slashları biz ekleyecez. yani sonuç olarak gpc açıkta olsa kapalıda olsa slashlar eklenmiş veriyi elde edeceğiz. ardından mysql_real_escape_string ile tekrar veriye slashlar eklenip veriler veritabanına slashlarla birlikte kaydedilebilir.

ama verilerin veritabanına slashsız olarak kaydedilmesini ve sadece sql injectiona karşı önlem alınmasını istiyor olabilirsiniz. bu durumda gpc yi kontrol edip eğer açık ise bir kere stripslashes uygulayarak slashardan arındırılmasını, eğer gpc açık değil ise veriye aynen ulaşılmasını sağlamalıyız ve sonra mysql_real_escape_string ile veri injection'a karşı temizlenmiş olarak sorguya sokulabilir.

örnek bir fonksiyon

function addescape($text) {
	if(get_magic_quotes_gpc()) {
		$text = stripslashes($text);
	}
	$text = addslashes(mysql_real_escape_string($text));
	return $text;
}

yukardaki fonksiyon sql injection engelleyecektir ve veriler veritabanında slashlı bir şekilde kaydedilecektir.

function addescape($text) {
	if(!get_magic_quotes_gpc()) {
		$text = addslashes($text);
	}
	$text = stripslashes(mysql_real_escape_string($text));
	return $text;
}

yukarıdaki fonksiyon ise gene sql injection'ı engelleyecektir. ama ilk fonksiyondan farklı olarak veri veritabanında slashsız olarak bulundurulacaktır.</description>
		<content:encoded><![CDATA[<p>yazdığınız fonksiyonda yanılmıyorsam bir hata var.<br />
yazımda magic_quotes_gpc ye direk gpc diyeceğim. çünkü yazması dert.</p>
<p>şimdi gelen veri gpc açık ise slashlardan arındırılıyor. ama gpc kapalı ise slashlar ekleniyor.<br />
amaç gpc nin durumunu kontrol ederek veriye slashlar eklemek. bu fonksiyon gpc nin açık veya kapalı olmasını kontrol edip her türlü durumda aynı sonucu döndürmeli. ama bu fonksiyon gpc durumunun farklı olduğu sunucularda farklı sonuçlar dönderecektir. buda sunucu sahibinib gpc yi değiştirmesi durumunda aksaklıklara neden olacaktır.</p>
<p>şöyle yapılabilirdi. mantığı şu yani: eğer gpc açık ise veriye slashlar eklenmiştir zaten. eğer kapalı ise slashları biz ekleyecez. yani sonuç olarak gpc açıkta olsa kapalıda olsa slashlar eklenmiş veriyi elde edeceğiz. ardından mysql_real_escape_string ile tekrar veriye slashlar eklenip veriler veritabanına slashlarla birlikte kaydedilebilir.</p>
<p>ama verilerin veritabanına slashsız olarak kaydedilmesini ve sadece sql injectiona karşı önlem alınmasını istiyor olabilirsiniz. bu durumda gpc yi kontrol edip eğer açık ise bir kere stripslashes uygulayarak slashardan arındırılmasını, eğer gpc açık değil ise veriye aynen ulaşılmasını sağlamalıyız ve sonra mysql_real_escape_string ile veri injection&#8217;a karşı temizlenmiş olarak sorguya sokulabilir.</p>
<p>örnek bir fonksiyon</p>
<p>function addescape($text) {<br />
	if(get_magic_quotes_gpc()) {<br />
		$text = stripslashes($text);<br />
	}<br />
	$text = addslashes(mysql_real_escape_string($text));<br />
	return $text;<br />
}</p>
<p>yukardaki fonksiyon sql injection engelleyecektir ve veriler veritabanında slashlı bir şekilde kaydedilecektir.</p>
<p>function addescape($text) {<br />
	if(!get_magic_quotes_gpc()) {<br />
		$text = addslashes($text);<br />
	}<br />
	$text = stripslashes(mysql_real_escape_string($text));<br />
	return $text;<br />
}</p>
<p>yukarıdaki fonksiyon ise gene sql injection&#8217;ı engelleyecektir. ama ilk fonksiyondan farklı olarak veri veritabanında slashsız olarak bulundurulacaktır.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
