<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>t-infection.com &#124; tasarım oyuncakları, web teknolojileri &#187; PHP Güvenlik</title>
	<atom:link href="http://www.t-infection.com/tag/php-guvenlik/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.t-infection.com</link>
	<description>tasarım oyuncaklarımız ve web teknolojilerine dair kısa kısa...</description>
	<lastBuildDate>Sat, 02 Apr 2011 17:47:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SQL&#8217;de Kabus, SQL Injection!</title>
		<link>http://www.t-infection.com/sqlde-kabus-sql-injection/</link>
		<comments>http://www.t-infection.com/sqlde-kabus-sql-injection/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 19:15:19 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[PHP Güvenlik]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=253</guid>
		<description><![CDATA[Merhaba t-infection okurları, bu sitedeki ilk yazımda, PHP&#8217;ye ilk başladığım zamanlar en çok yaptığım bir hatayı ve bunu nasıl düzelteceğimizi anlatmak istedim. Eğer PHP yazıyorsanız, ilk başta öğrenmeniz gereken önemli noktalardan birisidir, aksi taktirde bütün emekleriniz boşa gidebilir.
SQL injection denen method ile, veritabanınıza yetkisiz işlem yaptırılabilir. Bu yetkisiz işlemler ile, veritabanınızdaki bir tablo tamamen boşaltılabilir, [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba t-infection okurları, bu sitedeki ilk yazımda, PHP&#8217;ye ilk başladığım zamanlar en çok yaptığım bir hatayı ve bunu nasıl düzelteceğimizi anlatmak istedim. Eğer PHP yazıyorsanız, ilk başta öğrenmeniz gereken önemli noktalardan birisidir, aksi taktirde bütün emekleriniz boşa gidebilir.</p>
<p>SQL injection denen method ile, veritabanınıza yetkisiz işlem yaptırılabilir. Bu yetkisiz işlemler ile, veritabanınızdaki bir tablo tamamen boşaltılabilir, veriler silinebilir veya veri eklenebilir, daha da kötüsü yazdığınız script bir yönetim paneline sahipse buraya izinsiz girişler olabilir.</p>
<p>SQL injection methodları farklılık gösterebilir, URL ile yapılabilir(GET), sitedeki formlar ile yapılabilir(POST). Temel mantığı ise, sizin yazdığınız SQL sorgularını safdışı bırakarak çalıştırılmak istenen sorguların çalıştırılmasıdır. Burada bu methodları tabi ki anlatmayacağım, bunun yerine PHP&#8217;de SQL injection&#8217;a karşı nasıl önlemler alabileceğimizi anlatacağım.<span id="more-253"></span></p>
<p>Basit bir SQL sorgumuz olsun, url ile gelen id&#8217;ye sahip makaleyi veritabanından seçelim.</p>
<pre class="brush: php;">$query = mysql_query(&quot;SELECT * FROM makaleler WHERE id=$_GET['id']&quot;, $baglanti);</pre>
<p>Bu şekilde kullandığınızda, çok büyük bir tehlike içerisindesiniz demektir. Bu sorguyu güvenli hale getirmek için sprintf fonksiyonunu da kullanacağız(bunu sadece daha düzenli bir kod yazımı için kullanıyoruz) ve sorgumuzu aşağıdaki hale getireceğiz:</p>
<pre class="brush: php;">$id = $_GET['id'];
$id = get_magic_quotes_gpc() ? stripslashes($id) : $id;
$id= function_exists(&quot;mysql_real_escape_string&quot;) ? mysql_real_escape_string($id) : mysql_escape_string($id);
$query = mysql_query(sprintf(&quot;SELECT * FROM makaleler WHERE id='%s'&quot;, $id), $baglanti);</pre>
<p>Sorgumuzu buhale getirerek kimsenin SQL&#8217;imize dokunmamasını sağlamış oluyoruz.</p>
<p>Bir örnek daha vermek gerekirse;</p>
<pre class="brush: php;">$query = mysql_query(&quot;INSERT INTO makaleler(baslik, icerik, yazan) VALUES ($_POST['baslik'], $_POST['icerik'], $_POST['yazan'])&quot;, $baglanti);</pre>
<p>yerine;</p>
<pre class="brush: php;">function guvenliyap($value) { // kullandığımız kodları fonksiyon haline getirelim
$value = get_magic_quotes_gpc() ? stripslashes($value) : $value;
$value= function_exists(&quot;mysql_real_escape_string&quot;) ? mysql_real_escape_string($value) : mysql_escape_string($value);
return $value;
}

$query = mysql_query(sprintf(&quot;INSERT INTO makaleler(baslik, icerik, yazan) VALUES ('%s', '%s', '%s')&quot;, guvenliyap($_POST['baslik']), guvenliyap($_POST['icerik']), guvenliyap($_POST['yazan'])), $baglanti);</pre>
<p>kullanarak güvenliğimizi sağlamış oluyoruz.</p>
<p>Kısacası, URL veya POST ile gelen bütün verileri bir filtreden geçirerek, bu gelen verinin içinde bulunabilecek &#8216; işaretlerini \&#8217; haline getiriyoruz. Böylece bu gelen verilerdeki zararlı işaretler, sorgumuzun içine karışmıyor ve SQL injection ile sitemize zarar vermek isteyen kişiler avuçlarını yalıyorlar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/sqlde-kabus-sql-injection/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

