<?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>Seyfullah KILIÇ &#187; csrf</title>
	<atom:link href="http://www.seyfullahkilic.com/tag/csrf/feed" rel="self" type="application/rss+xml" />
	<link>http://www.seyfullahkilic.com</link>
	<description>Kodları Paraya Dönüştüren Adam :)</description>
	<lastBuildDate>Mon, 23 Jan 2012 22:00:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CSRF&#8217;den Korunma Yolları</title>
		<link>http://www.seyfullahkilic.com/csrfden-korunma-yollari</link>
		<comments>http://www.seyfullahkilic.com/csrfden-korunma-yollari#comments</comments>
		<pubDate>Fri, 28 May 2010 12:32:38 +0000</pubDate>
		<dc:creator>Seyfullah KILIÇ</dc:creator>
				<category><![CDATA[Bilişim Güvenlik]]></category>
		<category><![CDATA[Makale]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web Tasarım]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[csrf açıkları]]></category>
		<category><![CDATA[csrf den korunma]]></category>
		<category><![CDATA[csrf nedir]]></category>

		<guid isPermaLink="false">http://www.seyfullahkilic.com/?p=453</guid>
		<description><![CDATA[Dünyanın en önemli kurumlarında bile görülebilen (Hotmail, Gmail, Yahoo vs&#8230;) CSRF (Cross-Site Request Forgery) güvenlik açığı nedir?, nasıl korunulabilir, alınabilecek güvenlik önlemleri nelerdir ? CSRF&#8217;ye biraz göz atalım&#8230; CSRF açıkları genellikle form doğrulamalarında, POST&#8217;larda ve GET&#8217;lerde görülebilir. Image yoluna aldatma olarak GET metoduyla istenilen query strinler de işletilebilir. Örneğin bir mesaj sistemi yaptık. İlgili kişilere [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-455" style="margin-left: 10px; margin-right: 10px;" title="csrf" src="http://www.seyfullahkilic.com/wp-content/uploads/2010/05/csrf.png" alt="" width="250" height="188" />Dünyanın en önemli kurumlarında bile görülebilen (Hotmail, Gmail, Yahoo vs&#8230;) <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery" target="_blank">CSRF (Cross-Site Request Forgery)</a> güvenlik açığı nedir?, nasıl korunulabilir, alınabilecek güvenlik önlemleri nelerdir ? CSRF&#8217;ye biraz göz atalım&#8230;</p>
<p>CSRF açıkları genellikle form doğrulamalarında, POST&#8217;larda ve GET&#8217;lerde görülebilir. Image yoluna aldatma olarak GET metoduyla istenilen query strinler de işletilebilir. Örneğin bir mesaj sistemi yaptık. İlgili kişilere göre yetki sistemini de ayarladık (moderatörler ve yöneticiler silme, değiştirme, onaylama vs.. işlemlerini yapabilme gibi) diyelim. Normal kullanıcıların işlem yapmaması için de güvenlikleri aldık diyelim. Gelelim burada CSRF açığından oluşabilecek güvenlik açıklarına&#8230;<br />
<span id="more-453"></span></p>
<p>Değiştirme, onaylama, silme olaylarını GET yöntemi ile adresten aldığımızı düşünelim (?P=Delete&amp;Id=146). Bu linke giren yetkili kullanıcılar, veritabanında ki 146. idli veriyi silebilirler (?). Sayfanın içine <span style="color: #ff0000;">&lt;img src=&#8221;<strong>?P=Delete&amp;Id=146</strong>&#8220;  /&gt; <span style="color: #000000;">image kodunu yazdıktan sonra, sayfaya giren daha önceden girişini yapmış yetkili kullanıcılar ilgili işlemin aynısını yapabilecekler. Farklı bir örnek olarak, bir sayfadan GET yöntemi ile gönderilen verilerinde aynı </span></span>yöntemi tetikleyeceği unutulmamalıdır. Bir mail geldi diyelim. Kişi, linke tıklamanızı istiyor. Link boş bir html sayfası açıp o anda yönlendirme yaparak bu adresi açtığını düşünelim. O tıklayan kişi yine sisteme giriş yapmış, ve yetkili kullanıcıysa, yine &#8220;Delete&#8221; stringini görecek ve silme işlemi yapılacaktır.</p>
<p>Bu açıktan korunmanın en güvenli ve hızlı yolu, <span style="text-decoration: underline;">session kontrolü</span> dür.  Db işlemlerinizden hemen önce session kontrolü yaparak, sayfanın oluşturulan session ile mi geldiğini kontrol ettirebilirsiniz.</p>
<p>Php&#8217;de örnek vereyim.</p>
<p>//Mesaj inputu poş ise.<br />
if(empty($_POST["Mesaj"])) {<br />
$_SESSION["anahtar"] = md5(rand(0,9999));<br />
//Random olarak üretilen md5 sessiona atılıyor.</p>
<p>//Form yazdırılıyor.<br />
echo &#8216;<br />
&lt;form method=&#8221;POST&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;Mesaj&#8221; /&gt;<br />
&lt;input type=&#8221;submit&#8221; value=&#8221;Gönder&#8221; /&gt;<br />
&lt;input type=&#8221;hidden&#8221; name=&#8221;token&#8221; value=&#8221;&#8216; . $_SESSION['anahtar'] . &#8216;&#8221; size=50&#8243; /&gt;<br />
&lt;/form&gt;&#8217;;<br />
}<br />
//Eğer post işlemi var ve Mesaj değişkeninin içi doluysa<br />
elseif(isset($_POST["Mesaj"])) {<br />
//Sayfadan gelen &#8220;token&#8221; değeri oluşturulan session ile aynıysa işlemler yapılıyor<br />
if( $_POST["token"] == $_SESSION['anahtar'] ) {<br />
echo(&#8220;Giriş Başarılı&lt;br&gt;&lt;br&gt;&#8221;) . $_POST["Mesaj"];<br />
$_SESSION['anahtar'] = &#8221;; //SESSIONımızı boşalttık ;)<br />
}<br />
else {<br />
//Gelen değer eşit değilse hatayı bas ;)<br />
die(&#8220;Doğrulama Yanlış !!!&#8221;);<br />
}<br />
}</p>
<p>Burada sayfa post edilmediyse rand ile oluşturulan md5 i session a atıyor. Sonra input hidden nesnesine oluşturulan md5 atanıyor.Post edildiyse oluşturulan en son session ile, Post&#8217;tan gelen inputdaki token değeri ile karşılaştırma yapılıyor. Eşitse işleme devam ediliyor. Değilse işlem sonlandırılıyor.</p>
<p>Bu sistem hem flood ı önlemekte,  hemde gizli olarak farklı yerden gelen POST, GET ve image içinde ki request değerlerinden korumaktadır.</p>
<p>Form doğrulamarında, kodlarla uğraşmam bana hazır bişiler lazım diyosanız da <a href="http://recaptcha.net/" target="_blank">reCAPTCHA </a>sistemini öneririm.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seyfullahkilic.com/csrfden-korunma-yollari/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

