<?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>Tunahan.net</title>
	<atom:link href="http://www.tunahan.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tunahan.net</link>
	<description>Tunahan H. MADEN Personal Page</description>
	<lastBuildDate>Fri, 29 Jan 2010 17:37:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SQL &#8211; Stored Prosedür Oluşturmak</title>
		<link>http://www.tunahan.net/2010/01/29/sql-stored-prosedur-olusturmak/</link>
		<comments>http://www.tunahan.net/2010/01/29/sql-stored-prosedur-olusturmak/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 17:25:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[EXEC]]></category>
		<category><![CDATA[ISBN]]></category>
		<category><![CDATA[Kod]]></category>
		<category><![CDATA[Oluşturmak]]></category>
		<category><![CDATA[Procedure]]></category>
		<category><![CDATA[Prosedür]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Stored]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=136</guid>
		<description><![CDATA[Prosedür ne demektir?
Nesneye dayalı programlama bu kadar popüler değilken, programlar sadece prosedür denilen parçacıklardan oluşurdu. Her bir prosedür, belli bir işlevi yerine getimrke için özenle yapılandırılmış program parçacığıdır. Mesela, iki sayı alıp bunların toplamlarını hesaplayan bir kod parçasını toplayıcı adında bir prosedür içerisine paketleyebiliriz. Bir prosedür, başka bir prosedür içerisinden çağrılabilir. Bu da sık kullanılan [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Prosedür ne demektir?</p>
<p></strong>Nesneye dayalı programlama bu kadar popüler değilken, programlar sadece prosedür denilen parçacıklardan oluşurdu. Her bir prosedür, belli bir işlevi yerine getimrke için özenle yapılandırılmış program parçacığıdır. Mesela, iki sayı alıp bunların toplamlarını hesaplayan bir kod parçasını toplayıcı adında bir prosedür içerisine paketleyebiliriz. Bir prosedür, başka bir prosedür içerisinden çağrılabilir. Bu da sık kullanılan işlemler için yazılmış kodların bir defa yazılıp çok defa kullanılmasını böylelikle de programlamayı kolyalaştırmayı amaçlar.</p>
<p>Saklı prosedürler, bir çok gelişmiş programlama dilindeki fonksiyon yapılarına karşılık gelir. Birden fazla işlemi, paketlenmiş bir halde bir tek komut ile çalıştırmamız gerektiğinde stored procedures kullanılır. İşlemden kasıt T-SQL ile yapılabilen her şeydir.</p>
<p>Stored procedure, 1980’li yılların sonunda Sybase SQLServer ile birlikte kullanıma girdi. En büyük özelliği sorguların önceden hazırlanması(derlenemesi) ve VTYS ile aynı uzayda çalışmasından dolayı daha hızlı sonuç vermesidir.</p>
<p>Bir SP oluşturulduktan sonra, veritabanı sunucusunda saklanır. Her ihtiyaç duyulduğunda aynı sp defalarca çağrılabilir. Cursor gibi oturum kapandığında silinmez.</p>
<p>Network bazlı çalışmalarda ağ trafiği ve sistem kaynaklarının kullanımın düzenleyerek de performans artışı sağlar. Bir dize işlem, bir tek paket içerisinde yer alır. Gerektiğinde bir tek komut ile tetiklenebilir. Paketin tamamı çalışıncaya kadar istemde bulunan terminale hiçbir şey gönderilmez. Tüm komutlar bittiğinde bir tek sonuç gönderilir. Bu da bazı durumlarda ağ trafiğini rahatlatır.<br />
Bir SP sistem tarafından oluşturulduğu anda şu aşamalara tabi tutulur:</p>
<p><strong>1.</strong> SP’nin bileşenleri parçalara ayrıştırılır<br />
<strong>2.</strong> Veritabanı içerisinde table,view gibi başka nesnelere atıfta bulunan referanslar varsa, geçerli olup olmadıkları kontrol edilir.(Geçerli:1-nesne varmı, 2-izin var mı)<br />
<strong>3.</strong> Kontrollerden geçen SP’nin adı sysobjects tablosuna, kodları ise syscomments tablosuna saklanır.<br />
<strong>4.</strong> Bu işlemlerle birlikte derleme işlemi yapılır. Normalizasyon işlemleri olarak da anılan bu işlemler sonucunda, ağaç şeması elde edilir. Bu şema da sysprocedures tablosunda saklanır.<br />
<strong>5.</strong> SP herhangi bir anda çağrıldığında, ilk kez çalışıyorsa bu işlemler gerçekleştirilir. İlk sefa çağrılmıyorsa, kontrol, sorgulama ağacı oluşturma işlemleri yapılmaz ve oldukça hızlı bir şekilde SP’nin derlenmiş hali çalışır. Bundan dolayı sp’ler derlenen nesnelerden biri olarak anılır.</p>
<p><strong>SP’ler şu faydaları sağlar:</strong></p>
<p><strong>1.</strong> Uygulamanın getirdiği bazı iş kuralları prosedür içinde tanımlanabilir. Bir kez oluştuktan sonra bu kurallar birden çok uygulama tarafından kullanılarak daha tutarlı bir veri yönetimi sağlanır. Ayrıca bir fonksiyonelliğin değişmesi ihtiyacı doğduğunda her uygulama için değişiklik yapmak yerine, sadece bir platformda değişiklik yapılır.</p>
<p><strong>2.</strong> Tüm prosedürler üstün performansla çalışır ancak birden fazla çalıştırılacak olan prosedürler sorgulama planları procedure cache içinde saklandığından daha da hızlı çalışırlar.<br />
<strong>3.</strong> Stored Procedure’ ler SQL Server start ettikten sonra otomatik olarak çalıştırılmak üzere ayarlanabilirler.<br />
4. Stored Procedure’ ler harici olarak kullanılırlar. Trigger’ lardan farklı olarak prosedürler uygulama tarafından ya da script tarafından bir şekilde çağrılmak zorundadırlar. Otomatik devreye giremezler.<br />
<strong>5.</strong> Stored Procedure’ lerın içinde SQL sorgulama diline ek olarak T-SQL komutlarını kullanabiliriz.<br />
<strong>6.</strong>Kullanıcının bir tabloya erişim izni olmasa bile o tablo üzerinde işlem yapan bir stored procedure’ ü kullanma izni olabilir.</p>
<p><strong>SP oluşturma:</strong></p>
<p><span style="background-color: #ffffff;">CREATE PROC [ EDURE ] procedure_name [ ; number ]<br />
[ { @parameter data_type }<br />
[ VARYING ] [ = default ] [ OUTPUT ]  ]<br />
[ ,...n ]</span><br />
<strong>Örnek:<br />
</strong>Çalıştırıldığı tarih itibariyle, aldığı kitapları getirmeyen üyelerin adını veren bir SP yazalım:</p>
<p>CREATE  PROCEDURE sp_cezaliUye<br />
AS<br />
&#8211; Bugünün tarihini al<br />
DECLARE @buGun DATETIME<br />
SET  @buGun = GetDate()</p>
<p>SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @buGun<br />
&#8211; bugünden önce gelmesi gereken ödünç işlemlerindeki üye adını seç.</p>
<p><strong>Daha sonra bu SP şu komut ile çağrılır:</strong></p>
<p><strong>EXEC sp_cezaliUye</strong><br />
&#8211; sp_cezaliUye stored procedure&#8217;ünü çalıştır.</p>
<p>SP üstünde değişiklik yapmak istediğimizde ise,</p>
<p><strong>Sp_helptext sp_adi</strong></p>
<p>Diyerek SP’nin içeriğini görebiliriz.<br />
Daha sonra bu içeriği Query Analyzer kod penceresine yapıştırıp,</p>
<p>ALTER PROCEDURE sp_cezaliUye<br />
AS</p>
<p>DECLARE @buGun DATETIME<br />
SET  @buGun = GetDate()</p>
<p>SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @buGun</p>
<p>Diyerek yeni halini kaydettirebiliriz.</p>
<p><strong>İPUCU:</strong><br />
Bir çok işlemi kod yazmaksızın yapmayı sağlayan Enterprise Manager’i kullanarak sp’leri de kolayca değiştirebilirisiniz. Bunun için Enterprise manager ile bir sp’yi seçip çift tıklamak yeterlidir.</p>
<p><strong>SP’ye parametre yollama:<br />
</strong>Bazen SP’ler dışarıdan parametre alabilirler:</p>
<p><strong>Örnek:</strong><br />
Herhangi bir tarih verildiğinde, bu tarihte süresi bittiği halde teslim edilmeyen kitapları bulan bir SP yazalım ancak tarih olarak bu günden daha büyük bir parametre alamasın. Böyle bir durum olduğunda, bu günün tarihini versin.</p>
<p>CREATE  PROCEDURE <a style="color: #000000; font-family: Arial; text-decoration: none;" href="mailto:sp_cezaliUye_1@referansTarih">sp_cezaliUye_1@referansTarih</a> DATETIMEASDECLARE @buGun DATETIME SET @buGun = GetDate()IF @referansTarih &gt; @buGun SET @referansTarih = @buGun &#8212; şayet, bugünün tarihi referans tarihten küçük ise,<br />
referans tarihi bugünün tarihi ile değiştir.<br />
SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @referansTarih<br />
&#8211; bugün veya daha eski bir tarihte, gelmemiş kitapları alan üyelerin listesini veren sorgu</p>
<p>Bazen dışarıdan gelen parametrelerin isteğe bağlı olması istenebilir.<br />
Bu durumda DEFAULT değer atama seçeneği kullanılır. Şayet dışarıdan parametreye değer atanmazsa, geçerli değer default atanmış değer olarak alınır ve işlem yapılır:</p>
<p><strong>Örnek:</strong><br />
CREATE  PROCEDURE sp_cezaliUye_2<br />
@referansTarih DATETIME = NULL<br />
&#8211; dışarıdan referans tarihi gelmedi ise, NULL olarak kabul et.<br />
AS</p>
<p>DECLARE @buGun DATETIME<br />
SET  @buGun = GetDate()</p>
<p>IF (@referansTarih IS NULL) OR (@referansTarih&gt;@buGun)<br />
SET @referansTarih = @buGun<br />
&#8211; Referans tarih gelmedi ise veya bugünün tarihinden büyük ise, bugünün tarihini al.</p>
<p>SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @referansTarih<br />
Go</p>
<p>şeklinde yazabiliriz. Daha sonra</p>
<p>EXEC sp_cezaliUye_2 @referansTarih=’01.01.2003’</p>
<p><strong>İle veya</strong></p>
<p>EXEC sp_cezaliUye_2<br />
Diyerek sp’yi çağırabiliriz.</p>
<p><strong>DİKKAT:</strong><br />
SP’de bir parametre için default değer tanımı yaparken, bu değerin sabit bir değer veya NULL olması gerektiğine dikkat etmelidir.</p>
<p><strong>İPUCU:</strong><br />
Bazı durumlarda, SP içerisinde SQL ifadesini bir değişkene atamak suretiyle durumlara göre dinamik olarak meydana getirip, daha sonra da onu çalıştırabiliriz. Bu durumda da EXEC fonksiyonu kullanılır. EXEC fonksiyonu, bir stored procedure batch&#8217;in ilk ifadesi değil ise de stored procedure çalıştırılırken kullanılmak zorundadır.</p>
<p><strong>Örnek:</strong></p>
<p>&#8212; Yanlış ifade(çalışmaz):<br />
DECLARE @isim VARCHAR(10)<br />
&#8230;<br />
sp_cezaliUye_2</p>
<p>&#8211; Doğru ifade(çalışır)<br />
DECLARE @isim VARCHAR(10)<br />
&#8230;.<br />
EXEC sp_cezaliUye_2</p>
<p><strong>Örnek:</strong><br />
Kitaplar tablosu üstünde aşağıdaki parametrelere göre arama yapabilecek bir SP yazalım. Parametrelerden gelenler için filtreleme yapılsın.<br />
Dışarıdan alınabilecek Parametreler: ISBNNo, KitapAdi, Yazari, Ozeti</p>
<p>CREATE  PROCEDURE sp_kitapBul<br />
@ISBNNo CHAR(16) =NULL,<br />
@KitapAdi VARCHAR(55)=NULL,<br />
@kitapYazari VARCHAR(55)=NULL,<br />
@KitapOzeti VARCHAR(55)=NULL<br />
AS</p>
<p>DECLARE @sSQL VARCHAR(500)<br />
&#8211; Bir SQL değişkeni tanımlıyoruz<br />
Set @sSQL= &#8216;SELECT * FROM Kitap WHERE 1=1 &#8216;<br />
IF @ISBNNo IS NOT NULL<br />
SET @sSQL = @sSQL + &#8216;  AND ISBNNo = &#8221;&#8217; + @ISBNNo + &#8221;&#8221;<br />
&#8211; ISBNNo parametresi null değilse sorguya ekliyoruz.</p>
<p>IF @KitapAdi IS NOT NULL<br />
SET @sSQL <a style="color: #000000; font-family: Arial; text-decoration: none;" href="mailto:=@sSQL">=@sSQL</a> + &#8216; AND KitapAdi  LIKE  &#8221;%&#8217;  + @KitapAdi +  &#8216;%&#8221;&#8217;<br />
&#8211; KitapAdi parametresi NULL değil ise sorguya ekliyoruz.</p>
<p>IF @KitapYazari IS NOT NULL<br />
SET @sSQL = @sSQL + &#8216; AND KitapYazari  LIKE  &#8221;%&#8217;  + @KitapYazari +  &#8216;%&#8221;&#8217;<br />
&#8212;KitapYazari Null değil ise sorguya ekliyoruz.</p>
<p>IF @KitapOzeti   IS NOT NULL<br />
SET @sSQL = @sSQL + &#8216;  AND KitapOzeti  LIKE  &#8221;%&#8217;  + @KitapOzeti +  &#8216;%&#8221;&#8217;<br />
&#8211; kitapOzeti null değil ise sorguya ekliyoruz.<br />
print @sSQL &#8211;nasıl bir SQL oluşturduğumuzu yazdırıyoruz.</p>
<p>EXEC(@sSQL)<br />
&#8211; bir VARCHAR değişkenin içerdiği T-SQL ifadesini çalıştırıyoruz.</p>
<p>Farklı parametre değerleri ile SP’yi çağırabiliriz:</p>
<p>&#8211; sadece ISBN vererek çağıralım<br />
EXEC Sp_kitapBul @ISBNNo=’12345’<br />
&#8211; ISBN ve KitapAdi parametreleri ile çağırma<br />
EXEC Sp_kitapBul @ISBNNo=’12345’, @kitapAdi=’Yol’</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/29/sql-stored-prosedur-olusturmak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Injection &#8211; Korunma Yollari</title>
		<link>http://www.tunahan.net/2010/01/29/sql-injection-korunma-yollari/</link>
		<comments>http://www.tunahan.net/2010/01/29/sql-injection-korunma-yollari/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 17:21:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[Korunma]]></category>
		<category><![CDATA[Şifre]]></category>
		<category><![CDATA[Yollari]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=133</guid>
		<description><![CDATA[Yazıya başlamadan önce belirtmek istediğim şey; bu makale bazı SQL injeksiyon yöntemlerinin nasıl yapıldığı konusunda öğretici bilgi içerebilir. Bu bilgileri ben sadece olası yapılabilecek hataların düzeltilmesi maksadıyla yayınlıyorum. Bu yazı kötü amaçlı olarak yazılmamıştır.
Dünyanin her tarafinda, kullanicilarina; kredi karti numaralari, kullanici bilgileri gibi gizli kalmasi gereken bilgilerin, ürünlere ve siparislere ait verilerin saklandigi uç-arka veri [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Yazıya başlamadan önce belirtmek istediğim şey; bu makale bazı SQL injeksiyon yöntemlerinin nasıl yapıldığı konusunda öğretici bilgi içerebilir. Bu bilgileri ben sadece olası yapılabilecek hataların düzeltilmesi maksadıyla yayınlıyorum. Bu yazı kötü amaçlı olarak yazılmamıştır.</strong></em></p>
<p>Dünyanin her tarafinda, kullanicilarina; kredi karti numaralari, kullanici bilgileri gibi gizli kalmasi gereken bilgilerin, ürünlere ve siparislere ait verilerin saklandigi uç-arka veri depolariyla hizmet veren web siteleri bulunmaktadir. Ve genel olarak, web sitelerindeki form araciligi ile alinan girdi ile veritabanindaki bilgiler filtrelendikten sonra sonucu kullaniciya gönderen bu tür sistemlerde Yapisal Sorgulama Dili (Structured Query Language &#8211; SQL) kullanilmaktadir. Uygulama içerisinde kullanilacak parametre degerleri alinirken kullanilan formun SQL Deyimini yeniden yapilandirabilecek bazi özel karakterlere izin vermesiyle güvenlik problemleri ortaya çikmaktadir.</p>
<p>Bu güvenlik problemleri kullanilarak bir uygulamanin arkasinda, bu uygulamaya destek veren veri tabani üzerindeki bütün bilgilere ulasilabilir veya bilgiler üzerinde degisiklik yapilabilir. Veya veri tabani sisteminin komutlari kullanilarak kullanilan sunucular üzerinde uygulama harici istenen islemler de yapilabilir. Bu problemlerden korunmak için de uygulama girdilerini bu tür karakterlere karsi kontrol eden fonksiyonlarin kullanilmali ve genis çapli uygulamalarin bu güvenlik açiklarini tasiyip tasimadigini anlamak için güvenlik denetimine tabi tutulmalidir..</p>
<p>Ilgilendiren Sektör ve Sirketler:</p>
<p>Özel olarak gelistirilmis uygulamalar kullanan tüm kurum ve kuruluslar<br />
Internet / Intranet üzerinde uygulama gelistiren kuruluslar</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>1. Bir Uygulama Güvenligi Problemi &#8211; &#8216;Yapisal Sorgulama Dili Kullanimi&#8217;</p>
<p>Yapisal Sorgulama Dili SQL&#8217;in uygulamalarda kullanimina örnek vermek gerekirse;</p>
<p>select Name, Address FROM Users WHERE UserID = &#8216;2081&#8242;</p>
<p>Seklindeki SQL Deyimi &#8216;Users&#8217; adli tablodan &#8216;2081&#8242; ürün ID si ile veritabanina kayitli olan kisiye ait olan isim ve adres bilgilerini dönecektir. Bu noktada muhtemel zayiflik, kullanilan formun SQL Deyimini yeniden yapilandirabilecek bazi özel karakterlere izin vermesiyle ortaya çikmaktadir. Çözümü ise girdilerden bu özel karakterlerin filtrelenmesini saglayan fonksiyonlardir.</p>
<p>Hizla gelisen internet teknolojileri karsisinda yeni pazarda geç olmadan yerini almak isteyen müsterilerine daha kisa sürede daha kullanisli ve ucuz çözümler sunmak zorunda olan uygulama gelistiriciler bu süreçte güvenlik gibi önemli bir faktörü ikinci plana atmaktadirlar.</p>
<p>Giderek yayginlasan ve medyanin haber potansiyelini olusturan; çalinan kredi karti numaralari, yer alti sitelerde dagitilan müsteri bilgileri, sirket projeleri &#8211; yazismalari yaklasan tehlikenin habercisi olmakla beraber halen bu tür kayiplarin yaratabilecegi maddi sonuçlari kavrayamayan ve hala &#8216;az maliyetle kurtarilan güvenlik projeleri&#8217; &#8216;yle övünen yöneticilere uyari niteligi tasimaktadir. Öyleki -herzaman bir adim önde olmayi amaçlayan- saldirganlar güvenligin en üst seviyede olmasi beklenen devlet siteleri de dahil olmak üzere pek çok sisteme yönelik saldirilarina da ara vermeksizin devam etmektedirler.</p>
<p>Maddi ve manevi degere sahip sirketinizi bir anlamda is ortaklarini olan uygulama gelistiricilerin hazirladiklari uygulama ürünlerine emanet edildigini düsünürsek, &#8216;uygulamalariniza ne kadar güvenirsiniz?&#8217; gibi bir soruya verilecek cevap büyük önem tasimaktadir.</p>
<p>Böyle bir ortamda uygun güvenlik çözümü için ayrilmis bütçe bir lüks degil her an yapilabilecek bir saldirida sirketin ugrayacagi zarari ortadan kaldirmak için alinmasi gereken önlem niteligi tasimaktadir.</p>
<p>2. Örnek Saldirilar &#8211; &#8216;Yapilacak Hamleleri Önceden Tahmin Edebilmek&#8230;&#8217;</p>
<p>Güvenlikte sikça kullanilan bir deyim; &#8216;Saldirganlardan korunabilmek için onlar gibi düsünmelisiniz!..&#8217;. Saldirganin sisteminize girmek için kullanabilecegi yöntemleri bilmek bu saldirilardan korunabilmek için alinan önlemleri daha saglikli kilacaktir.</p>
<p>Örneklerde kullanacagimiz hedef ; Microsoft® Internet Information Server™&#8217; dan Microsoft® SQL Server™&#8217;a varsayilan sistem hesabi&#8217;ndan (sa) baglanan ASP tabanli bir kullanici hesabi yöneticisi olacak.<br />
Form.asp : Username ve Password girdisini alan form.Solda&#8230;<br />
Login.asp : Veritabani ile baglantiya geçen ve girdinin dogrulugunu kontrol eden ASP kodu.</p>
<p>2.1. Kötü Amaçli (&#8217;) Imleçleri Yardimiyla Izinsiz Giris Saglama:</p>
<p>Kullanici &#8216;Username&#8217; &amp; &#8216;Password&#8217; verisini Login.asp ye yolladiktan sonra .asp kodunun yapacagi is verilen yoldaki veritabani ile baglanti kurup ilgili tabloda Username ve Password sütünlarinda gönderilen verinin dogrulugunu kontrol etmek olacaktir. Bu islem sonucunda eger sonuç olumluysa kullaniciya; &#8216;Giris Yapildi&#8217; olumsuzsa; &#8216;Geçersiz Kullaniciadi &amp; Sifre&#8217; mesaji verilecektir.<br />
Örnekleyecek olursak;</p>
<p>Username : ilkay<br />
Password : 2081</p>
<p>Seklindeki kullanici girdisi asagidaki SQL Deyimini olusturacaktir;</p>
<p>select count(*) FROM Users WHERE Username = &#8216;ilkay&#8217; AND Password = &#8216;2081&#8242;</p>
<p>Ilk bakista sorun olmayan bir SQL Deyimi&#8230; Fakat saldirganin;</p>
<p>Username : ilkay<br />
Password : &#8216; OR 1=1&#8211;</p>
<p>Seklindeki girdilerle olusturacagi SQL Deyimi ise;</p>
<p>select count(*) FROM Users WHERE Username = &#8216;ilkay&#8217; AND Password = &#8221; OR 1=1 &#8211;&#8217;</p>
<p>Olacaktir ki, bu durumda girisin saglanmasi için sart &#8216;ilkay&#8217; kullanici adina ait sifrenin hiçbirsey* olmasi veya ikinci bir opsiyon olarak 1=1 esitliginin saglanmasidir.</p>
<p>* Hiçbisey = Bosluk</p>
<p>Sonuç : 1=1 esitligi saglandigina göre saldiri basariyla sonuçlanacak ve &#8216;Giris Yapildi&#8217; mesaji verilecektir.</p>
<p>Not : Microsoft® SQL Server™ &#8216;&#8211;&#8217; imlecinden sonra gelen yersiz kullanilmis tirnak isaretlerini göz ardi edecektir. Ilk bakista basit gibi görünen ve sadece SQL Server&#8217;a ait olan bu özellik ilerde örneklerden de anlasilacagi üzere saldirgana büyük kolaylik saglayacaktir..</p>
<p>2.2. Uzaktan Çalistirilmasi Mümkün Olan Prosedürler:</p>
<p>MS SQL Server&#8217;a varsayilan sistem hesabindan yaptigimiz baglanti SQL Enjeksiyon saldirisinda muhtemel saldirgana sunucuda saklanan prosedürleri çalistirabilmesi için gerekli haklari taniyacaktir. Saldirganin kullanabilecegi prosedürlerden bir tanesi; &#8216;master..xp_cmdshell&#8217; olabilir.</p>
<p>Username : ilkay<br />
Password : &#8216;; EXEC master..xp_cmdshell &#8216;dir c:&#8217;&#8211;</p>
<p>Girdileriyle olusacak SQL Deyimi;</p>
<p>select count(*) FROM Users WHERE Username = &#8216;ilkay&#8217; AND Password = &#8221;; EXEC master..xp_cmdshell &#8216;dir c:&#8217;&#8211;&#8217;</p>
<p>Sonuç : SQL Server Kullaniciadi ve Sifreyi bulunduran sütunlari arayacaktir bulamadigi için &#8216;Yanlis Kullaniciadi &amp; Sifre&#8217; mesajini verecektir fakat bu arada arka planda &#8216;dir c:&#8217; komutunu çalistiracak ve saldirgan C sürücüsünün içerigine ulasacaktir.</p>
<p>2.3. SQL Server Hedef Alinarak Yapilan Saldirilar:</p>
<p>Yönetici haklarina sahip saldirgan silme,ekleme,degistirme&#8230;vb gibi komutlari rahatlikla çalistirabilecektir.</p>
<p>SHUTDOWN WITH NOWAIT SQL Server&#8217;in kritik komutlarindan bir tanesidir. Komutla beraber SQL Server görevine son verir.</p>
<p>Username : &#8216;; SHUTDOWN WITH NOWAIT&#8211;<br />
Password : [Bos]</p>
<p>Bu girdilerle olusturulan SQL Deyimi;</p>
<p>select Username FROM Users WHERE Username=&#8221;; SHUTDOWN WITH NOWAIT; &#8211;&#8217; AND Password=&#8221;</p>
<p>Sonuç : SQL Server kullaniciadinin bulunamadigi mesajini verecektir. Fakat bununla beraber arka planda diger komutu çalistirdigi için SQL Server kapanacaktir.</p>
<p>2.4. ODBC Hatalarindan Faydalanarak Yapilan Saldirilar:</p>
<p>SQL Server&#8217;in verdigi hatalardan faydalanarak veritabanindaki neredeyse tüm bilgilere ulasmak mümkündür.</p>
<p>Hedef; http://Victim/Default.asp?id=10 seklinde ürün ID leri ile çalisan ASP tabanli bir websitesi.</p>
<p>Saldiri SQL Server&#8217;in integer ve string cinsinden verileri birlikte gönderememesinden faydalinarak yapilabilir;</p>
<p>Gönderilen &#8216;10&#8242; sayisina veritabanindan herhangi bir string eklenir.</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES&#8211;</p>
<p>Not: &#8216;INFORMATION_SCHEMA.TABLES&#8217; sistem tablosu, sistemde bulunan diger tüm tablolar hakkinda bilgi içerir. Deyimde kullanilan &#8216;TABLE_NAME&#8217; de yine tüm tablo isimlerini içerir.</p>
<p>Olusacak SQL Deyimi;</p>
<p>select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES</p>
<p>String -&gt; Integer dönüsümünü yapamayan SQL Server asagidaki hatayi verecektir.</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;Table1&#8242; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Hata, saldirgana &#8216;Table1&#8242; olarak buldugu cevabi integer a çeviremedigini (dolayisiyla veritabanindaki ilk tablo adinin &#8216;Table1&#8242; oldugunu) belirtmektedir. Saldirgan diger tablolarin adini asagidaki sekilde ögrenebilir&#8230;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (&#8217;Table1&#8242;)&#8211;</p>
<p>Veya dogrudan LIKE komutunu kullanarak aradigi seye daha kolay yoldan ulasabilir;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE &#8216;%/%25Login%/%25&#8242;&#8211;</p>
<p>SQL Server&#8217;in verecegi hata;</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;Admin_Login&#8217; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Admin_Login adinda bir tablo oldugunu ögrenen saldirgan muhtemelen tablodaki ilk kullaniciadi ve sifreye ulasmak isteyecektir. Izleyebilecegi yol ise;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 Username FROM Admin_Login&#8211;</p>
<p>Hata;</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;ilkay&#8217; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Bu sekilde &#8216;admin&#8217; kullaniciadinin varligini dogrulayan saldirganin sifreyi ele geçirmek için kullanacagi girdi;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 Password FROM Admin_Login WHERE Username=&#8217;ilkay&#8217;&#8211;</p>
<p>Hata;</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;2081&#8242; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Sonuç :<br />
Username : ilkay<br />
Password : 2081</p>
<p>2.5. Veritabanina Ekleme Yapma veya Veri Düzenleme:</p>
<p>Kullaniciadi ve sifre bilgisine ulasan muhtemel saldirgan benzer yöntemleri ve UPDATE,insert komutlarini kullanarak sifreyi degistirebilir veya daha temizi baska bir kullanici hesabi açabilir&#8230;</p>
<p>http://Victim/Default.asp?id=10; UPDATE &#8216;Admin_Login&#8217; SET &#8216;Password&#8217; = &#8216;NewPwd&#8217; WHERE Username=&#8217;ilkay&#8217;&#8211;</p>
<p>Yeni bir kullanici hesabi için;</p>
<p>http://Victim/Default.asp?id=10; insert INTO &#8216;Admin_Login&#8217; (&#8217;UserID&#8217;, &#8216;Username&#8217;, &#8216;Password&#8217;, &#8216;Details&#8217;) VALUES (666,&#8217;Desperate_Cry&#8217;,'2081&#8242;,&#8217;N /A&#8217;)&#8211;</p>
<p>3. Nasil Korunmali? &#8211; &#8216;Aksi Dogrulanincaya Kadar Tüm Kullanici Girdileri Kötüdür&#8230;&#8217;</p>
<p>Gelebilecek SQL Enjeksiyon saldirilarindan korunabilmek için alinan önlemlerde temel alinmasi geren nokta&#8230; &#8216;Aksi dogrulanincaya kadar tüm kullanici girdileri kötüdür!&#8217;.</p>
<p>3.1. Kullanici Haklarinin Sinirlandirilmasi</p>
<p>Yaygin olarak yapilan hata; Web Server dan SQL Server a yapilan baglantilarda varsayilan sistem hesabi kullanilmasi&#8230; Bu sekilde yönetici haklarina sahip olan saldirgan örneklerde de görülebilecegi üzere istegi komutu çalistirip istedigi ekleme,silme,düzeltme eylemini gerçeklestirebilecektir. Bunu yerine yapilmasi gereken yeni bir kullanici hesabi olusturup kullanicinin çalistirabilecegi komutlari sinirlandirmak olacaktir.</p>
<p>Mesela sitenizden ürünlerinizin incelenmesine ve bunlar arasindan siparis verilmesine izin verecekseniz, &#8216;web_user&#8217; gibi bir kullanici adi olusturup ürünleri incelemek için; ürünler sütununda sadece &#8217;select&#8217; kullanimina ve siparisleri için; siparisler sütununda sadece &#8216;insert&#8217; kullanimina izin vermeniz uygun olacaktir.</p>
<p>3.2. Girdilerde Tirnak Imleçlerinin (&#8217;) Kötü Amaçli Kullaniminin Engellenmesi</p>
<p>Yaygin SQL Enjeksiyon saldirilari SQL deyimlerinin girdilerdeki gereksiz (&#8217;) tirnak isaretleri yardimiyla yeniden olusturulmasi sayesinde yapilir.</p>
<p>Küçük bir filtreleme fonksiyonu veya tek tirnagi çift tirnaga çeviren bir fonksiyon muhtemel bir saldiriyi engellmek için yeterli olabilir.</p>
<p>ASP Kullanarak girdileri kontrol ederek degistiren bir fonksiyon kolaylikla yazilabilir;</p>
<p>Bu fonksiyonu bastaki örnekte kullanirsak;</p>
<p>select count(*) FROM Users WHERE Username=&#8217;ilkay&#8217; AND Password=&#8221; OR 1=1 &#8211;&#8217;</p>
<p>seklinde olan deyim&#8230;</p>
<p>select count(*) FROM Users WHERE Username=&#8217;ilkay&#8217; AND Password=&#8221; OR 1=1 &#8211;&#8217;</p>
<p>&#8216;e dönüsecektir.</p>
<p>3.3. Form Girdilerinden Gereksiz Karakterlerin Elenmesi</p>
<p>SQL Enjeksiyon saldirilari genelde &#8216;;, &#8211;,select, insert ve xp_&#8217; gibi karakterlerin-kelimelerin kullanilmasiyla yapildigi için gönderilecek girdinin önce bir filtreleme fonksiyonundan geçirilmesi muhtemel zayifligi engelleyebilir.Örnegin kullanicidan E &#8211; Mail adresini girmesi isteniyorsa harfler ve sayilarin yaninda sadece &#8216; @,-,_,.&#8217; karakterlerinin kullanilmasina izin verilmelidir.</p>
<p>Ve sunucuda saklanan xp_cmdshell ve xp_grantlogin gibi genel prosedürler,C/C++ tabanli DLL ler, kullanici tarafli fonksiyonlar&#8230;vb, izole edilmis bir sunucuya tasinmalidir. Bazi zararli kelime-harfleri filteleyen ASP fonksiyonu asagida örneklenmistir;</p>
<p>Tirnak degistirme fonksiyonu ve filtreleme fonksiyonu beraber kullanilirsa;</p>
<p>select Username FROM Users WHERE Usename=&#8221;; EXEC master..xp_cmdshell &#8216;dir c&#8217;; &#8211;&#8217; AND Password=&#8221;</p>
<p>Seklindeki SQL Deyimi&#8230;</p>
<p>select Username FROM Users WHERE Usename=&#8221; EXEC master.. cmdshell &#8216;dir c:&#8217; &#8216; AND Password=&#8221;</p>
<p>e dönüsecektir ki bu da herhangi bir kayit bulumadigi hatasini vermekten öteye gitmeyecektir.</p>
<p>Bu fonksiyonu kullanicidan gelen bütün girdilere, adres satiri ifadelerine ve çerezlerden gelen tüm veriye uygulamamiz gelebilecek saldirinin önüne geçecektir.</p>
<p>3.4. Girdi Uzunlugunun Sinirlandirilmasi</p>
<p>Veritabanindaki ayrilan alanin uzunlugu 10 karakterlikse, formunuzda bu alan için 50 karakter sigan bir text kutusuna sahip olmaniz sakincali olabilir. Ve mümkün oldugu kadar girdi uzunluklarini kisa tutmak muhtemel saldiriyi engellemek için önlem sayilabilir.</p>
<p>3.5. Girdi Cinsinin Kontrol Edilmesi</p>
<p>Formunuzdan girilen verinin istediginiz türden bir veri olup olmadigini kontrol eden bir fonksiyon kötü amaçli kullanimlarda saldirganin kullanabilecegi harf/sayi seçenegini kisitlayacaktir. Mesela, eger Ürün ID si için formunuzdan girdi aliyorsaniz girdinin sayisal bir ifade olup olmadigini kontrol eden bir fonksiyon fayda saglayacaktir.</p>
<p>3.6. Girdi Cinsinin Kontrol Edilmesi</p>
<p>Formunuz araciligi ile topladiginiz verileri yollarken mutlaka &#8216;POST&#8217; metodunu kullanin ki kullanicilariniz adres çubugunda girdikleri verilerle beraber form degerlerini gördüklerinde akillarina farkli fikirler gelmesin.</p>
<p>4. Son Söz &#8211; &#8216;Herzaman bir adim önde!&#8217;</p>
<p>Aldiginiz güvenlik önlemleri veya (en iyi ihtimalle) yazip da kullanmayi bir aliskanlik haline getiremediginiz güvenlik politikalari sizi güvenlik problemlerine karsi koruyabilir mi? Eger güvenlik ile ilgili problemleri yönetmeyi süreç temelli bir güvenlik bilinci içerisinde ele almiyorsaniz hiçbir güvenlik ürünü, bir güvenlik kaybina ugramanizi engelleyemez.</p>
<p>Bilgi sistemleri altyapinizi tasidiklari güvenlik zaaflarina karsi düzenli olarak kontrol ettirmek, risklerinizi takip etmek, dogru teknolojiyi dogru yerde ve dogru sekilde kullanmanizi saglayacak güvenlik politikalarinizi olusturup güvenlik probleminizi sürekli yönetebilecek olgunluga ulasmak hedeflenmelidir. Bilgi sistemlerinin önemli bir kismini olusturan uygulamalarin tasiyabilecegi güvenlik sorunlari uzun süredir ihmal edilmelerinden dolayi, günümüzün en popüler sistem sizma noktalarini teskil etmektedirler. Bu nedenle uygulama güvenligine iliskin gereken önemi vermeniz, güvenlik denetimi yaptirmaniz ve kurumunuzun bilgi güvenligi yönetim sistemini olusturmaya bir yerinden baslamanizi öneriyorum&#8230;</p>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td><strong><strong>SQL Injection Ataklarından Nasıl Korunuruz?</strong></strong></p>
<p>Bu makalemizin konusu başlıktan da anlaşılacağı gibi, web uygulamalarımıza yapılan saldırılara karşı nasıl önlem almamız gerektiği. Aslında web uygulamamıza yapılabilecek bir çok saldırı metotları vardır. Bu makalede, bu saldırı çeşidinden biri olan Sql Injection (Sql Aşılama) ataklarına karşı savunma taktiklerini anlatacağım. Peki sql injection atakları nasıl yapılır?? Sql Injection atakları, web uygulamalarımızda yer alan veri girişleri için kullandığımız TextBox form elemanlarının içine yazılan bazı sql komut deyimlerinin yazılması ile olur.</p>
<p>Web uygulamalarımızın en zayıf bölümü kullanıcı girişlerinin yapıldığı ve sonucunda yetkilendirme yapıldığı bölümlerdir. Yani login sayfalarıdır. Web uygulamaları ile ilgilenen herkes mutlaka bir login sayfası yapmıştır. Temel olarak iki tane TextBox ve bir tane Button yer alır. Kullanıcı TextBox&#8217;lara gerekli verileri girdikten sonra Button&#8217;a tıklar ve Button&#8217;un OnClick olayı devreye girer. OnClick olayında ise veritabanına bağlantı gerçekleştirilir, gerekli sorgu komutu yazılır ve eğer TextBox&#8217;lara girilen veriler ile veritabanındaki tabloda yer alan herhangi bir kayıt eşleştiyse (veya en az bir kayıt döndürüyorsa) bu kullanıcı için web uygulamasına giriş başarılı olmuştur. Yani kullanıcının Authenticate işlemi gerçekleştirilmiştir. Aslında her şey düzgün çalıştığını zannederken kötü niyetli kişiler tarafından web uygulamalarınızın tehdit altında olduğunu farketmezsiniz. Bende web uygulamaları ile çalışmaya yeni başlarken eğer kod düzgün çalışıyorsa her şey bitmiş gibi düşünürdüm. Güvenlik kısmını herzaman arka plana atmıştım. Bazen makelelerimizde esas konuya yoğunlaşmak için bazı güvenlik ilkelerini ihlal ederiz. Fakat siz uygulamalarınızda güvenlikten asla ödün vermeyin.</p>
<p>Sizlere bu makalede kötü yazılmış bir kod ve iyi yazılmış bir kodun karşılaştırmasını yapacağım. Fakat en önce Sql Injection ataklarına karşı koymanız için gereken 5 temel savunma prensibini bilmeniz gerekir:</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="47%"><strong><strong>Prensipler</strong></strong></td>
<td width="53%"><strong><strong>Neler Yapmalısınız?</strong></strong></td>
</tr>
<tr>
<td>Kullanıcı girdilerine asla güvenmeyin.</td>
<td>Tüm TextBox girişlerinin değerlerini Validator Kontrolleri, Regular Expressions veya kod ile kontrol edin.</td>
</tr>
<tr>
<td>Veritabanına asla admin düzeyinde bağlanmayın.</td>
<td>Veritabanına gerekli düzeyde kısıtlı erişim ile bağlanın.</td>
</tr>
<tr>
<td>Asla dinamik Sql sorguları kullanmayın.</td>
<td>Parametre göndererek veya Stored Procedure Kullanın.</td>
</tr>
<tr>
<td>Veritabanına verilerinizi asla açık şekilde yazmayın.</td>
<td>Verilerinizi şifreleme algoritması kullanarak veritabanına kaydedin.</td>
</tr>
<tr>
<td>Web uygulamalarınızda meydana gelebilecek istisnalarla(Exceptions) veya hatalarla ilgili bilgileri en düşük düzeyde kullanıcıya aktarın.</td>
<td>Web uygulamalarınızda meydana gelebilecek olası her hataya karşı özel bir hata sayfası hazırlayın.</td>
</tr>
</tbody>
</table>
<p>Şimdi sıra geldi web uygulamalarınızı nasıl yazmanız ve yazmamanız gerektiğine.<br />
login.aspx sayfamızda yer alan Button&#8217;un OnClick olayına şu şekilde kod yazılmış olduğunu farzedelim.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr height="326">
<td height="326" valign="top" bgcolor="#cccccc">private void Button1_Click(object sender, System.EventArgs e)<br />
{<br />
string strCnx = ConfigurationSettings.AppSettings["BadconnStr"];<br />
SqlConnection conn = new SqlConnection(strCnx);</p>
<p>conn.Open();<br />
SqlCommand cmd = new SqlCommand();<br />
cmd.Connection = conn;<br />
cmd.CommandText = &#8220;Select * From users Where username = &#8216;&#8221;+ txtusername.Text +&#8221;&#8216; AND password = &#8216;&#8221;+ txtpassword.Text +&#8221;&#8216; &#8220;;</p>
<p>SqlDataReader dr;<br />
dr = cmd.ExecuteReader();<br />
if(dr.Read())<br />
{<br />
FormsAuthentication.RedirectFromLoginPage(txtusername.Text,false);<br />
}<br />
else<br />
{<br />
ErrLabel.Text = &#8220;Başarısız İşlem&#8221;;<br />
}</td>
</tr>
</tbody>
</table>
<p>Eğer kullanıcı kendi kullanıcı adı ve şifresini girerse her şey normal şekilde sürer. Fakat eğer iyi yazılmamış bir login sayfasında aşağıdaki gibi bir ifade girilirse ne olur görelim.</p>
<p><strong><strong>&#8216;or 1=1&#8211;</strong></strong></p>
<p>şeklinde bir Sql ifadesi kullanıcı adının girileceği TextBox&#8217;a girilir ve şifre kısmına da rastgele bir değer girilirse, veritabanımızdaki tabloda böyle bir kullanıcı olmasa bile yetkilendirme işlemi başarılı olacaktır. Çünkü &#8216;or 1=1&#8211; ifadesinin TextBox&#8217;a girilmesi sonucu sorgu ifadesi şu şekle dönüşmüş olur.</p>
<p><strong><strong>Select * From users Where username = &#8216; &#8216;or 1=1&#8211;&#8217; AND password = &#8216;&#8221;+ txtpassword.Text +&#8221;&#8216; </strong></strong></p>
<p>Kullanıcı adını yazdığımız TextBox nesnesine girilen &#8216;or 1=1&#8211; ifadesinde yer alan &#8212; işaretlerinin anlamı; &#8212; işaretlerinden gelen sonraki ifadeleri yoksay olacaktır. Yani sonuç olarak ifademiz;</p>
<p><strong><strong>Select * From users Where username = &#8216; &#8216;or 1=1&#8211;</strong></strong></p>
<p>şekline dönüşecektir.Bu ifadede yer alan or 1=1 ifadesi sürekli doğru sonucu vereceğinden sonuç olarak sorgu işlemi bir kayıt döndürecektir. Bizim if döngümüzde yer alan dr.Read() ifadesi de true değerini alacağından if deyimi çalıştırılacak ve kullanıcı Authenticate işlemini başarı ile geçecektir.</p>
<p>Peki bu Sql Injection saldırısının çalışmasını sağlayan hatalar neydi? Kodumuzu satır satır inceleyelim.</p>
<p><strong><strong>string</strong></strong><strong><strong> strCnx = ConfigurationSettings.AppSettings["BadconnStr"]; </strong></strong><strong><br />
<strong><strong>SqlConnection conn = new SqlConnection(strCnx);</strong></strong></strong></p>
<p>bu ifadede BadconnStr değerini Web.config sayfamızdan almaktayız. Web.config sayfamızda yer alan ConnectionString ifademiz şu şekildedir.</p>
<p>Bu ConnectionString ifadesindeki hata veritabanına sa olarak bağlanmamızdır. Hiçbir zaman veritabanına sa kullanıcısı olarak bağlanmayın. Çünkü sa veritabanı üzerinde çok yüksek haklara sahiptir. Oysa bize gerekli olan sadece <strong><strong>SELECT</strong></strong> sorgusu.</p>
<p>Diğer bir hata ise sorgu işleminin dinamik olarak yapılması. Eğer bu şekilde dinamik olarak SQL sorguları yaratılırsa yukarıda girilen &#8216;or 1=1&#8211; ifadesinin girilmesi ile çok büyük güvenlik açıklarına neden olursunuz. Peki ne yapacağız. Yukarıda bahsettiğim prensiplere göre parametre olarak veri göndermeli veya Stored Procedure kullanmalıyız.</p>
<p>Aslında yukarıda TextBox&#8217;lara girilen değerleri de kontrol etmemiz gerekir. Yine aynı şekilde TextBox&#8217;ın MaxLength özelliğinin mutlaka kısıtlanması gerekir. Yani TextBox&#8217;lara sınırsız karakter girilmesini önlemeliyiz. TextBox&#8217;lara girilebilecek özel karakterleri de kontrol etmeliyiz. Yani &#8216; &#8221; &#8211; + # % &amp; gibi bir çok karakterlerin girilmemesini sağlamalıyız.</p>
<p>Sadece &#8216;or 1=1&#8211; ifadesinden farklı Sql Injection saldırıları da olabilir. Örneğin yine kullanıcı adını girdiğimiz TextBox nesnesinin içine,<br />
<strong><br />
</strong><strong><strong>&#8216;; UPDATE users SET password = &#8216;deneme&#8217; WHERE username = &#8216;mehmet&#8217; &#8212; </strong></strong></p>
<p>ifadesi de girilebilir. Peki bu Sql Injection ne gibi zararlara neden olur?</p>
<p>Bu ifade ile çoklu Sql deyimleri noktalı virgül yardımı ile aynı anda çalıştırılabilir. Bu ifade ile users tablosunda yer alan kullanıcı adı mehmet olan kişinin şifresini deneme olarak değiştiriyor. Eğer yukarıdaki gibi kötü yazılmış bir kod varsa bu işlem başarı ile gerçekleştiriliyor. Yine aynı şekilde buna benzer bir ifade ile, veritabanında yeni kullanıcılar yaratılabilr, bir tablo silinebilir, veya herhangi bir stored procedure yazılarak çok farklı işlemler gerçekleştirilebilir. Bunu önlemenin yolu veritabanına bağlantı yaptığımız ConnectionString&#8217;inde yer alan user&#8217;a sadece ve sadece gerekli izinler verilmelidir. Örneğin, burada user&#8217;ın sadece SELECT ifadesi için izin verilseydi hiç bir sorun olmayacaktı.</p>
<p>Şimdi daha güvenli login işleminin nasıl gerçekleşeceğini görelim.</p>
<p><strong><strong>Daha Güvenli Login Sayfamız</strong></strong></p>
<p>Öncelikle sayfamızın tasarım kısmının neye benzediğine bakalım. Daha iyi görebilmek için şeklin üzerine tıklayıp büyütebilirsiniz</p>
<p><a href="http://www.capraz.net/aspnetimages/Sqlinjection_1.gif" target="_blank"></a></p>
<p>LOGIN Butonuna tıkladığımızda çalışacak kodu görmeden önce Web.config dosyasında yer alan ConnectionString ifadesini görelim.</p>
<p>Button&#8217;umuzun OnClick olayında çalışacak kod ise şu şekildedir.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr height="537">
<td height="537" valign="top" bgcolor="#cccccc">private void Button1_Click(object sender, System.EventArgs e)<br />
{<br />
if(Page.IsValid)<br />
{<br />
string strCnx = ConfigurationSettings.AppSettings["BetterconnStr"];<br />
SqlConnection conn = new SqlConnection(strCnx);</p>
<p>conn.Open();<br />
SqlCommand cmd = new SqlCommand();<br />
cmd.Connection = conn;<br />
cmd.CommandType = CommandType.StoredProcedure;<br />
cmd.CommandText = &#8220;UserControl&#8221;;</p>
<p>SqlParameter prm;<br />
prm = new SqlParameter(&#8221;@username&#8221;,SqlDbType.NVarChar,50);<br />
prm.Direction = ParameterDirection.Input;<br />
prm.Value = FormsAuthentication.HashPasswordForStoringInConfigFile(txtusername.Text,&#8221;SHA1&#8243;);<br />
cmd.Parameters.Add(prm);</p>
<p>prm = new SqlParameter(&#8221;@password&#8221;,SqlDbType.NVarChar,50);<br />
prm.Direction = ParameterDirection.Input;<br />
prm.Value = FormsAuthentication.HashPasswordForStoringInConfigFile(txtpassword.Text,&#8221;SHA1&#8243;);<br />
cmd.Parameters.Add(prm);</p>
<p>SqlDataReader dr;<br />
dr = cmd.ExecuteReader();<br />
if (dr.Read())<br />
{<br />
FormsAuthentication.RedirectFromLoginPage(txtusername.Text, false);<br />
}<br />
else<br />
{<br />
ErrLabel.Text = &#8220;Başarısız İşlem&#8221;;<br />
}<br />
}<br />
}</td>
</tr>
</tbody>
</table>
<p>Yukarıda makalenin ilk başında bahsettiğim 5 temel prensibin hepsi bu login işleminde uygulandı. TextBox nesnelerine girilebilecek max karakter sayısının kısıtlanması ile çalışabileck Sql deyimleri girilemez. Aynı şekilde RegularExpressionValidator ifadeleri ile özel karakterlerin girilmesi önlenlenmiş oldu. Yine ConnectionString ifademizde benim yarattığım bir kullanıcı ile bağlanılıyor. Bu kullanıcıya sadece StoredProcedure&#8217;leri çalıştırılmasına izin veriliyor. Böylece başka herhangi bir sql komutunun çalışmasına olanak tanınmıyor. Çünkü veritabanına bağlanan kullanıcının yapabildikleri kısıtlanmıştır. SqlCommandType&#8217;in özelliği Stored Procedure olarak ayarlanmış ve böylece dinamik SQL ifadelerinin kullanılması engellenmiş olur. Stored Procedure&#8217;e aktarılan parametrelerde şifrelenerek veritabanında, şifrelenmiş olarak duran kayıtlarla karşılaştırlır.</p>
<p>Elbette web uygulamasının içerisinde, login sayfasından farklı sayfalarda yer alan TextBox nesneleri ile kötü niyetli kullanıcılar veritabanımıza dolayısıyla web uygulamamıza zarar verebilirler. Örneğin, herkesin bildiği site içerisinde arama yapabilmemizi sağlayan TextBox nesnelerine girilen değerlerde kontrol edilmelidir.</p>
<p>Bu makalenin içerisinde yer alan kodları daha iyi anlayabilmek için, makale içinde geçen bazı konuları (FormsAuthentication, Verileri Şifreleme, RegularExpressionValidator, Stored Procedure) yine aspnedir.com sitesinden okumanızı tavsiye ederim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/29/sql-injection-korunma-yollari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beyin Kapasitesinin % Kaçını Kullanıyoruz?</title>
		<link>http://www.tunahan.net/2010/01/27/beyin-kapasitesinin-kacini-kullaniyoruz/</link>
		<comments>http://www.tunahan.net/2010/01/27/beyin-kapasitesinin-kacini-kullaniyoruz/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 15:45:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[%]]></category>
		<category><![CDATA[beyin]]></category>
		<category><![CDATA[kaç]]></category>
		<category><![CDATA[kanser]]></category>
		<category><![CDATA[kapasite]]></category>
		<category><![CDATA[Kullanmak]]></category>
		<category><![CDATA[nöron]]></category>
		<category><![CDATA[Tubitak]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=131</guid>
		<description><![CDATA[Beynimiz yaklaşık 10-12 milyar arası nöron (sinir hücresi) içerir. Ancak bilindiği üzere beynimizin çok düşük bir yüzdesini kullanırız. Bunun nedeni aslında sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmalarıdır. Eğer sini hücresine sentrozom ya da sentrozomun görevini görebilecek enzim nakledilirse kendi kendilerini yenileyebilme özelliklerini kazanabilirler mi? Eğer bu mümkünse, beynimizin daha [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><span style="font-family: 'Times New Roman', Times, serif; font-size: medium; font-style: normal;">Beynimiz yaklaşık 10-12 milyar arası nöron (sinir hücresi) içerir. Ancak bilindiği üzere beynimizin çok düşük bir yüzdesini kullanırız. Bunun nedeni aslında sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmalarıdır. Eğer sini hücresine sentrozom ya da sentrozomun görevini görebilecek enzim nakledilirse kendi kendilerini yenileyebilme özelliklerini kazanabilirler mi? Eğer bu mümkünse, beynimizin daha fazla bölümünü kullanabilir miyiz? (Cansın Kalın)</span><br />
<span id="more-152"> </span></p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><span style="font-family: 'Times New Roman', Times, serif; font-size: medium; font-style: normal;"><br />
</span></p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; text-decoration: none; margin: 0px;"><em>Beynimizin Yalnızca % 10’unu Kullandığımız Söylencesi</em><br />
Öncelikle sorunuzun başında belirttiğiniz varsayıma göz atalım isterseniz: “Beynimizin çok düşük bir yüzdesini kullanırız.” Yaklaşık bir asır önce ortaya atılan bu iddianın kaynağı bazı bilim insanlarının söylem ve bulgularının yanlış yorumlanıp çarpıtılmasına dayanıyor. Bugün, sinir bilim ve beyin görüntüleme tekniklerindeki gelişmeler öyle gösteriyor ki, beynimizdeki tüm sinirler çeşitli eylemler sırasında aktive oluyor. Daha açık bir deyişle, kullanmadığımız herhangi bir sinir ağı bulunmuyor. Konuyla ilgili bir başka yaklaşımsa sinir hücrelerinin herhangi bir uyarıcı almadıklarında dejenere olarak işlevselliklerini kaybediyor olma özellikleri. Örneğin, görsel sistem. Gelişmenin erken dönemlerinde göz sinirleri yeterli uyarıcıya maruz bırakılmadıklarında görme yetisi kayboluyor. Benzer şekilde, eğer ki beynimizde kullanılmayan sinir ağları bulunsaydı, işlevselliklerini kaybetmiş olmalarını beklememiz gerekirdi. Fizyolojik kanıtlar bir yana, iddia evrimle de uyuşmuyor. Aktif olmayan, hayatta kalma mücadelemize katılmayan sinir ağları içeren büyük bir beyin evrimsel gelişimle de bağdaşmıyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><strong style="color: #000000; font-size: 12px; line-height: 1px;">ANCAK</strong></p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;">Olgun haldeki sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmaları gibi bir durum söz konusu. Bu nedenle de, herhangi bir darbe ya da yaşlanma sonucu kaybedilen sinirler beyin kapasitesini doğal olarak olumsuz yönde etkiliyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><em>Beyindeki Sinir Hücreleri Gerçekten de Kendilerini Yenileme Yetisinden Yoksun mu?</em><br />
Beyindeki sinir hücrelerinin kendilerini yenileyebilme yetisinden yoksun olduklarını gösteren çalışmaların öncüsü 1960’larda yaptığı çalışmalarla ismini duyuran bir sinir bilimci: Dr. Pasko Rakic. Nitekim felç ya da diğer beyin zedelenmelerinde hastaların kaybettikleri konuşma ve yürüme gibi yetileri daha sonradan tekrar edinememeleri de bu bulguları destekler nitelikte. Ancak başlangıcı 1965 yılında sıçanlar üzerinde yapılan deneylere dayanan ve son yıllarda hız kazanan bir takım çalışmalar, beyindeki bazı bölgelerde sinir hücrelerinin yenilenebildiğini gösteriyor. Özellikle de belleksel işlevleri olan hippokampüs bölgesi ile makaklar üzerinde çalışılan üst düzey bilişsel işlemlerden sorumlu ve evrimsel gelişimde son sırada yer alan düşünme, koklama ve duyma ile ilişkili korteks bölgelerinin kök hücreler sayesinde sinirsel yönden yenilenebildikleri bulgular arasında. Ancak bilim insanları, bu çalışma sonuçlarının Alzheimer ya da Parkinson gibi sinir hücreleri kaybı içeren bir takım hastalıkların tedavisinde kullanılabilmesi için klinik ve uygulamaya yönelik daha çok çalışma yapılması gerektiğini söylüyorlar.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><em>Gelelim Sentrozomlarla Sinir Hücreleri Arasındaki İlişkiye…</em><br />
Sinir hücresinin başka bir hücre üretme olasılığının kalmadığı gelişim aşamasında sentrozoma rastlanmıyor. Her ne kadar bazı araştırmacılar, yaralanmaların olduğu birtakım yetişkin beyni bölgelerinde sentrozoma rastlamış olduklarını rapor etmişlerse de sonraki araştırmalar bu bulguları pek de kanıtlar nitelikte değil. Sinir hücreleri, gelişim dönemleri içerisinde özelleştikçe, çoğalma yetilerini de kaybediyorlar. Bölünme yetisinin yitiminin, meydana gelebilecek bölünmelerin, mevcut sinaps ağlarının da bozulmasına yol açabileceğinden evrilmiş olabileceği düşünülüyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><em>Sinir Hücrelerinde Sentrozom Görevi Görebilecek Bir Yapı Oluşturulursa, Kendilerini Yenileyebilme Özelliğini Edinebilirler mi?</em><br />
Eğer ki sinir hücrelerine böyle bir müdahalede bulunacak olursak, tekrar bölünebilme özelliği kazanacaklardır. Ancak uzmanlar, bu yöntemin tıp uygulamalarında niçin kullanılamayacağına dair iki önemli noktaya işaret ediyorlar:<br />
1.) Eğer ki, sentrozom yapısını kaybetmiş bir hücrede bu yapıyı tekrar oluşturursak, hücre kontrolsüzce çoğalmaya başlıyor. Tıpkı kanser hücreleri gibi. Bu nedenle de bu uygulama, tümör oluşumlarına yol açıyor.<br />
2.) Eğer ki, sentrozom yapısı yalnızca embriyonal dönemde korunan hücrelerde (örneğin, sinir hücreleri) bu yapı müdahale ile sürekli hale getirilirse, hücreler özelleşme durumu göstermiyorlar. Çünkü hücrelerdeki özelleşme, sentrozom yapısının kaybından sonra gerçekleşiyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><span style="text-decoration: underline;">Kaynak : Tübitak &#8211; İnci Ayhan</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/27/beyin-kapasitesinin-kacini-kullaniyoruz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programlı Hayat</title>
		<link>http://www.tunahan.net/2010/01/27/programli-hayat/</link>
		<comments>http://www.tunahan.net/2010/01/27/programli-hayat/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 15:42:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[başarı]]></category>
		<category><![CDATA[hayat]]></category>
		<category><![CDATA[hayatı]]></category>
		<category><![CDATA[programlamak]]></category>
		<category><![CDATA[programlı]]></category>
		<category><![CDATA[temel]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=128</guid>
		<description><![CDATA[Düzenli bir hayat sürdürebilmek,için hayatı programlamamız gerektiğini düşünüyorum.Hayat denilen bu büyük sınavdan iyi not alabilmek için,istediklerimizi yapabilmek için hayatımızı programlamalı ve hayattan ne beklediğimizi bilmeliyiz.Mutlu olabilmek için yaşadığımızı biliyoruz,fakat bu bizim için yeterli değildir.İnsan mutlu olmak için yaşadığını bilmenin dışında,mutlu olabilmek için neler yapması gerektiğinide bilmelidir. Düzenli olarak çalışmalı,spor yapmalı,oyun oynamalı ve başka aktivitelerde bulunmalıdır.
İnsan [...]]]></description>
			<content:encoded><![CDATA[<p>Düzenli bir hayat sürdürebilmek,için hayatı programlamamız gerektiğini düşünüyorum.Hayat denilen bu büyük sınavdan iyi not alabilmek için,istediklerimizi yapabilmek için hayatımızı programlamalı ve hayattan ne beklediğimizi bilmeliyiz.Mutlu olabilmek için yaşadığımızı biliyoruz,fakat bu bizim için yeterli değildir.İnsan mutlu olmak için yaşadığını bilmenin dışında,mutlu olabilmek için neler yapması gerektiğinide bilmelidir. Düzenli olarak çalışmalı,spor yapmalı,oyun oynamalı ve başka aktivitelerde bulunmalıdır.<br />
İnsan soyut-somut herşeyi sevmelidir.Çünkü sevmek inanmaktır,çünkü sevmek yaşamaktır….<br />
Her insan kendisine ilk önce ”Hayat Felsefem Nedir’’sorusunu sormalı,ve bu sorunun cevabını verdikten sonra bu felsefeyi uygulamaya çalışmalıdır.<br />
Kimileri okuyup bir öğretmen ya da bir mühendis olmayı seçmiştir,kimileri de okumayı bırakıp beceri ve deneyim gerektiren meslekleri seçmiştir.İşte bu mesleklerin seçimi yapılırken,<br />
insan kendine bir program oluşturmalı,çalışması gerektiğini hatırlamalı ve onu çalışmaktan alıkoyacak faktörlere karşı bir duruş sergilemelidir.Konunun özü şu ki ;<br />
İnsan haftanın bir gününde belirli bir saatte çalışmayı planlamışsa (ya da tv izlemeyi), o programa göre hareket etmelidir.İşte bu insan’a herzaman kazanç sağlayacak bir faktördür.<br />
Plansızlık dikkatsizliğe,motivasyon kazanamamaya yol açacaktır.<br />
Ayrıca burada değinilmesi gereken diğer bir konuda ”zaman kavramıdır”.Asıl planması gerekende<br />
zamandır.Tüm olaylar zaman içinde gerçekleşir.Belirli saatler arasında uyumalı ve belirli saatler arasında planlar yapılmalıdır.Konuya bilimsel olarak bakıcak olursak;<br />
Fizyologların önerilerine göre sabah saatleri çalışma saatleri için en uygun saatlerdir. Öğle vakti ise insan beynini dinlendirmelidir.Araştırmalar beyin dinlendirildikten sonra(uykudan<br />
sonra),güne yeni başlamış gibi bir durumun oluşacağını ortaya çıkarmıştır. Yazımı şu özlü sözlerle noktalamak istiyorum;<br />
Bir işte başarılı olmak için yapılacak ilk iş, hedef belirlemek; ikinci iş ise, belirlenen hedefe yönelik bir plan yapmaktır.<br />
Elden çıkınca kazanılmayan tek sermeye zamandır. Zaman iyi planlama ile genişler, içine o kadar şey sığar ki… İsraf edilince de olanca hızıyla akıp gider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/27/programli-hayat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KOPARDIN &#8211; NURULLAH GENÇ</title>
		<link>http://www.tunahan.net/2010/01/10/kopardin-nurullah-genc/</link>
		<comments>http://www.tunahan.net/2010/01/10/kopardin-nurullah-genc/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 03:04:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Şiir Gezegeni]]></category>
		<category><![CDATA[beni]]></category>
		<category><![CDATA[Bir]]></category>
		<category><![CDATA[bıraktın]]></category>
		<category><![CDATA[çölüne]]></category>
		<category><![CDATA[genç]]></category>
		<category><![CDATA[hicran]]></category>
		<category><![CDATA[kopardın]]></category>
		<category><![CDATA[nurullah]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=126</guid>
		<description><![CDATA[Kopardın
Bir hicran çölüne bıraktın beni
Kalbine girdiğim yolu kopardın
Yaydın üzerime yalan gölgeni
Adını andığı dili kopardın
İçimden boşluğa savruldu külün
Hüznün ateşiyle yandı kakülün
Yıllardır ruhumda öten bülbülün
Her seher konduğu dalı kopardın
Uzattıkça sana boş ellerimi
Birer birer yıktın hayallerimi
Bilmem, ölü müyüm, yoksa diri mi
Saçımdan sn siyah teli kopardın
Gönlümde aşkınla hergün yeşeren
Göğü yıldız yıldız önüme seren
O güzel, bembeyaz gülü kopardın
Aynasında yalnız seni [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bir hicran çölüne bıraktın beni</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Kalbine girdiğim yolu kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yaydın üzerime yalan gölgeni</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Adını andığı dili kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">İçimden boşluğa savruldu külün</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Hüznün ateşiyle yandı kakülün</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yıllardır ruhumda öten bülbülün</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Her seher konduğu dalı kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Uzattıkça sana boş ellerimi</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Birer birer yıktın hayallerimi</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bilmem, ölü müyüm, yoksa diri mi</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Saçımdan sn siyah teli kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gönlümde aşkınla hergün yeşeren</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Göğü yıldız yıldız önüme seren</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">O güzel, bembeyaz gülü kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Aynasında yalnız seni gösteren</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Nurullah Genç</div>
<p><strong>Kopardın</strong></p>
<p>Bir hicran çölüne bıraktın beni<br />
Kalbine girdiğim yolu kopardın<br />
Yaydın üzerime yalan gölgeni<br />
Adını andığı dili kopardın</p>
<p>İçimden boşluğa savruldu külün<br />
Hüznün ateşiyle yandı kakülün<br />
Yıllardır ruhumda öten bülbülün<br />
Her seher konduğu dalı kopardın</p>
<p>Uzattıkça sana boş ellerimi<br />
Birer birer yıktın hayallerimi<br />
Bilmem, ölü müyüm, yoksa diri mi<br />
Saçımdan sn siyah teli kopardın</p>
<p>Gönlümde aşkınla hergün yeşeren<br />
Göğü yıldız yıldız önüme seren<br />
O güzel, bembeyaz gülü kopardın<br />
Aynasında yalnız seni gösteren</p>
<p><strong>Nurullah Genç</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/10/kopardin-nurullah-genc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yakılacak Mektuplar 24 &#8211; Mehmet TAŞ</title>
		<link>http://www.tunahan.net/2009/12/26/yakilacak-mektuplar-24-mehmet-tas/</link>
		<comments>http://www.tunahan.net/2009/12/26/yakilacak-mektuplar-24-mehmet-tas/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 20:00:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[bulduğum]]></category>
		<category><![CDATA[can]]></category>
		<category><![CDATA[Mehmet]]></category>
		<category><![CDATA[Mektuplar]]></category>
		<category><![CDATA[merhaba]]></category>
		<category><![CDATA[Taş]]></category>
		<category><![CDATA[Varlığında]]></category>
		<category><![CDATA[Yakılacak]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=121</guid>
		<description><![CDATA[Yakılacak Mektuplar 24
Varlığında can bulduğum merhaba. Yine can çekişiyor aydınlıklar. Gece devralmaya başladı nöbetini. İnce bir sızı gibi girdi sensizlik her gece biraz daha yabancılaşan odama. Duvarlara anlattığım öykülerde hep sen oluyorsun. Sen oluyorsun rüyalarımda yalnızlığımı paylaşan. Yıldızlara okuduğum şiirler birer birer göktaşı olup dökülmeye başladılar. Belli ki çekemez oldu gökyüzü hasretin bunca ağırlığını. Susuzluğumdan [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yakılacak Mektuplar 24</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Varlığında can bulduğum merhaba. Yine can çekişiyor aydınlıklar. Gece devralmaya başladı nöbetini. İnce bir sızı gibi girdi sensizlik her gece biraz daha yabancılaşan odama. Duvarlara anlattığım öykülerde hep sen oluyorsun. Sen oluyorsun rüyalarımda yalnızlığımı paylaşan. Yıldızlara okuduğum şiirler birer birer göktaşı olup dökülmeye başladılar. Belli ki çekemez oldu gökyüzü hasretin bunca ağırlığını. Susuzluğumdan gayrı sıkıntım yok şimdilerde. Susuzluğumsa hepten senden yana.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sayılı günler tez geçer diyorlar ya, yalanmış teselliye varan bu sözler. Geçmiyor, geçmiyor takvimlerin hoyratlığı</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sensizlik tez geçsin diye dilekler diliyorum. Mum yakmak bana göre değil biliyorsun. Ondandır yatırlara gitmeyişim. Ağaçlara çaput bağlayıp, gözyaşımı kristal şişelerde saklamayışım ondan.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Dertler paylaşıldıkça azalırmış. Paylaşmak istemeyişim senden gelen dertlere aşina oluşumdandır.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yine paylaşıldı varlığı alemin. Tapu kayıtlarına düşmedi adımız. Tamı tamına hasretin kaldı bana. Bir sen, bir ben, bir de senden kalan ince bir sızı…</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Var olasın ey sevgili.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Mehmet Taş</div>
<p>Yakılacak Mektuplar 24</p>
<p>Varlığında can bulduğum merhaba. Yine can çekişiyor aydınlıklar. Gece devralmaya başladı nöbetini. İnce bir sızı gibi girdi sensizlik her gece biraz daha yabancılaşan odama. Duvarlara anlattığım öykülerde hep sen oluyorsun. Sen oluyorsun rüyalarımda yalnızlığımı paylaşan. Yıldızlara okuduğum şiirler birer birer göktaşı olup dökülmeye başladılar. Belli ki çekemez oldu gökyüzü hasretin bunca ağırlığını. Susuzluğumdan gayrı sıkıntım yok şimdilerde. Susuzluğumsa hepten senden yana.</p>
<p>Sayılı günler tez geçer diyorlar ya, yalanmış teselliye varan bu sözler. Geçmiyor, geçmiyor takvimlerin hoyratlığı</p>
<p>Sensizlik tez geçsin diye dilekler diliyorum. Mum yakmak bana göre değil biliyorsun. Ondandır yatırlara gitmeyişim. Ağaçlara çaput bağlayıp, gözyaşımı kristal şişelerde saklamayışım ondan.</p>
<p>Dertler paylaşıldıkça azalırmış. Paylaşmak istemeyişim senden gelen dertlere aşina oluşumdandır.</p>
<p>Yine paylaşıldı varlığı alemin. Tapu kayıtlarına düşmedi adımız. Tamı tamına hasretin kaldı bana. Bir sen, bir ben, bir de senden kalan ince bir sızı…</p>
<p>Var olasın ey sevgili.</p>
<p><strong>Mehmet Taş</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2009/12/26/yakilacak-mektuplar-24-mehmet-tas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yakılacak Mektuplar 31 &#8211; Mehmet TAŞ</title>
		<link>http://www.tunahan.net/2009/12/26/yakilacak-mektuplar-31-mehmet-tas/</link>
		<comments>http://www.tunahan.net/2009/12/26/yakilacak-mektuplar-31-mehmet-tas/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 19:49:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[Mehmet]]></category>
		<category><![CDATA[Metuplar]]></category>
		<category><![CDATA[Taş]]></category>
		<category><![CDATA[Yakılacak]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=118</guid>
		<description><![CDATA[Yakılacak Metuplar 31
Bıktım sabahı olmayan gecelerin soğuk yüzünü seyretmekten. Bıktım, boş duvarların arsız sırıtışlarından, kaş çatışlarından. Umut ekmekten, hüzün biçmekten bıktım.
Gidişin soğuk bir kış gecesiydi. Buz kesilmişti kaldırımlar, buz kesilmişti bedenim. O zaman biliyordum dönmeyeceğini. O zaman biliyordum bütün yolların çıkmaza uzandığını. Ama bir umut, kücüçük de olsa bir umut kalsın içimde istemiştim. Kaldı mı [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yakılacak Metuplar 31</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bıktım sabahı olmayan gecelerin soğuk yüzünü seyretmekten. Bıktım, boş duvarların arsız sırıtışlarından, kaş çatışlarından. Umut ekmekten, hüzün biçmekten bıktım.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gidişin soğuk bir kış gecesiydi. Buz kesilmişti kaldırımlar, buz kesilmişti bedenim. O zaman biliyordum dönmeyeceğini. O zaman biliyordum bütün yolların çıkmaza uzandığını. Ama bir umut, kücüçük de olsa bir umut kalsın içimde istemiştim. Kaldı mı sence.?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bir haber yollayacaktın, bir selam, bir mektup, ya da geri döneceğin umudu saklayan bir işaret. Hani nerede?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Zaman, çok acımasız. Her derde ilaç derlerdi de inanırdım. Zaman ilaç değilmiş derdime. Bir yok oluşun, kahroluşun takvimlerdeki yansımasıymış zaman.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Uzun gecelerde sana şiirler yazardım. Kelimelere hece hece sevda yükler de yıldızların ürkek titreyişlerinde sana yollardım. Şimdi ne şiir yazıyorum, ne de yıldızları seyrediyorum. Yok artık kelimelerin eski gücü, yok yıldızların ürkek titreyişi. Yok, yok, yok. Sen yoksun ya, yaşamak için sebep yok.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gittin. Bir koyu yalnızlığa mahkûm ettin beni.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gittin, sıyrıldım dünya nimetlerinden. Bir berduş, bir ayyaş, bir dilenciyim şimdi sevda şehrinin soğuk kaldırımlarında.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Üşüyorum canparem,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yalnızım canparem</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Korkuyorum canparem.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sen gelmesen de bir selam, bir mektup, bir haber de mi yollayamazsın.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Ölüyorum canparem.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Mehmet Taş</div>
<p>Yakılacak Metuplar 31</p>
<p>Bıktım sabahı olmayan gecelerin soğuk yüzünü seyretmekten. Bıktım, boş duvarların arsız sırıtışlarından, kaş çatışlarından. Umut ekmekten, hüzün biçmekten bıktım.</p>
<p>Gidişin soğuk bir kış gecesiydi. Buz kesilmişti kaldırımlar, buz kesilmişti bedenim. O zaman biliyordum dönmeyeceğini. O zaman biliyordum bütün yolların çıkmaza uzandığını. Ama bir umut, kücüçük de olsa bir umut kalsın içimde istemiştim. Kaldı mı sence.?</p>
<p>Bir haber yollayacaktın, bir selam, bir mektup, ya da geri döneceğin umudu saklayan bir işaret. Hani nerede?</p>
<p>Zaman, çok acımasız. Her derde ilaç derlerdi de inanırdım. Zaman ilaç değilmiş derdime. Bir yok oluşun, kahroluşun takvimlerdeki yansımasıymış zaman.</p>
<p>Uzun gecelerde sana şiirler yazardım. Kelimelere hece hece sevda yükler de yıldızların ürkek titreyişlerinde sana yollardım. Şimdi ne şiir yazıyorum, ne de yıldızları seyrediyorum. Yok artık kelimelerin eski gücü, yok yıldızların ürkek titreyişi. Yok, yok, yok. Sen yoksun ya, yaşamak için sebep yok.</p>
<p>Gittin. Bir koyu yalnızlığa mahkûm ettin beni.</p>
<p>Gittin, sıyrıldım dünya nimetlerinden. Bir berduş, bir ayyaş, bir dilenciyim şimdi sevda şehrinin soğuk kaldırımlarında.</p>
<p>Üşüyorum canparem,</p>
<p>Yalnızım canparem</p>
<p>Korkuyorum canparem.</p>
<p>Sen gelmesen de bir selam, bir mektup, bir haber de mi yollayamazsın.</p>
<p>Ölüyorum canparem.</p>
<p><strong>Mehmet Taş</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2009/12/26/yakilacak-mektuplar-31-mehmet-tas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elif Şafak &#8211; AŞK</title>
		<link>http://www.tunahan.net/2009/12/25/elif-safak-ask/</link>
		<comments>http://www.tunahan.net/2009/12/25/elif-safak-ask/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 20:41:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[aşık]]></category>
		<category><![CDATA[aşk]]></category>
		<category><![CDATA[elif]]></category>
		<category><![CDATA[mevlana]]></category>
		<category><![CDATA[şafak]]></category>
		<category><![CDATA[şems]]></category>
		<category><![CDATA[sufi]]></category>
		<category><![CDATA[tasavvuf]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=116</guid>
		<description><![CDATA[Uzun zamandır herkeslerin dilinde olan bu kitabı “Aşk – Elif Şafak” tedarik etmek için bir alışveriş merkezine doğru yol aldım. Güzel bir gezintiden sonra üst katlarda bulunan kitapçı dükkânına girdim. Şöyle enine boyuna bir kolaçan ettim rafları, pembe kapağıyla bana
-“Buradayım”
der gibiydi adeta. Bana ait şeylerle böyle içsel  dostluk kurar onlara lisanımızı öğretir, sohbet ederim. [...]]]></description>
			<content:encoded><![CDATA[<p>Uzun zamandır herkeslerin dilinde olan bu kitabı “Aşk – Elif Şafak” tedarik etmek için bir alışveriş merkezine doğru yol aldım. Güzel bir gezintiden sonra üst katlarda bulunan kitapçı dükkânına girdim. Şöyle enine boyuna bir kolaçan ettim rafları, pembe kapağıyla bana<br />
-“Buradayım”<br />
der gibiydi adeta. Bana ait şeylerle böyle içsel  dostluk kurar onlara lisanımızı öğretir, sohbet ederim. Oysa henüz daha onu almadan, üstüne üstlük hem de benim dilimde<br />
-“Buradayım”<br />
diyordu. Hemen elime alıp gülümsedim, dokunup sevdim ve kasaya yöneldim.<br />
- “Poşet verelim!”<br />
dediler. Yok ama ben onu elimde taşımak istiyordum.<br />
- “Gerek yok…”<br />
Dedim, nazik bir halle ödemeyi yapıp çıktım. Sanki bir çocuğa koskocaman bir şeker alınmış gibi bir sevinç vardı içimde. Mesnevi kitapları, Tasavvuf kitapları okumuştum daha öncesinde ama bir şey bana<br />
- “Bak bu farklı”<br />
der gibiydi.Hızla eve varıp kitabı alıp yatağa zıpladım ilk sayfayı okudum ve bir an durakladım. Daha önce okuduğum bir içerik vardı sanki… Oysa bu kitabı elime dahi almadığıma emindim. Şöyle bir düşündüm:<br />
- “Acaba internetten, bir yerlerden içeriği gözüme mi ilişmişti?”<br />
Sayfalarda ilerledikçe sonraki satırlarda da neler olacağını önceden kestiriyor gibiydim. Oysaki internetten bir şeyler okumuş olsam bile bu kadarına haiz olmam imkansız olurdu. E peki ben bir sonraki satırda neler olacağını nasıl biliyordum? Kitabı kapattım ve kapağına bakarak<br />
- “Beni özümle buluşturmaya mı karar verdin“<br />
dedim. Sonra baş ucuma bıraktım. Saate baktım, epey geç olmuştu uyumam gerekiyordu… Oysa içimden bir ses sürekli<br />
- “Kitabı al ve oku… Durma hadi devam et”<br />
diyordu…  Hızla okuyor karakterleri çok yakından tanıyormuş gibi bir hisse kapılıyordum. Kitapta adı Ella olan bir editör asistanı vardı ve Aziz Zahara adındaki yazarın yolladığı kitabı okuyacak, editöre rapor edecekti. Bu bilgiler doğrultusunda yazı yayına girecek ya da değerlendirilecekti. Aziz Zahara’nın yolladığı Aşk Şeriatı kitabında Mevlana Celaleddin Rumi ve Tebrizli Şemsi anlatıyordu. Ah Şems… Âşıkların piri Şems, can Şems, dost Şems…</p>
<p>Aynı kitapta bir Bağdat, bir Semerkand, bir Boston geziniyordum. Farklı karakterlerin dillerinden yazılar dinliyordum. Şems’in kırk kuralı, gönlü geniş ve ruhu gezgin sufi meşreplilerin kırk kuralı, kırk hakikati ve insana aşkın bile bile yanmak olduğunu, aşkın ilahi, insani ya da başka bir şey için değil başlı başına bir dünya oluşundan bahsedişini&#8230; Etkilenmemek elde değildi.<br />
- ”Aşksız geçen bir ömür beyhude yaşanmıştır.”<br />
Diyordu Şems. Birçok fikrim vardı aşkla ilgili ama hep en üzücü olanı, aşkın acı verdiğini düşünürdüm. Bu yönden kitap bakış açımı oldukça değiştirdi. Şems’in ucunda ölüm olduğunu bilerek Konya’ya gelmesi, Ella’nın her şeyi bırakıp Amerika’dan ayrılıp aşk uğruna bilmediği bir memlekete gitmesi üstelik âşık olduğu adamın az ömrü kaldığını bildiği halde yinede her şeyden vazgeçmesi. Etkilenmemek elde değildi.<br />
- “Tasavvuf seni senden alır, seni sana sensiz verir”<br />
Beni benden aldılar… Kitap arşivlik bitirip yeniden aynı heyecanla okunacak kadar başarılı. Bende özü yakalamama sebep oldu, kendimi keşfettim ve aşktan kaçmak yerine aşkı aramaya karar verdim.<br />
<strong> Âşıkların şeriatı da Allah&#8217;tır, mezhebi de…</strong></p>
<p>Kaynak: <a href="http://www.renklidergi.com/kultur-sanat/kitap/Elif-Safak-Ask">http://www.renklidergi.com/kultur-sanat/kitap/Elif-Safak-Ask</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2009/12/25/elif-safak-ask/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ne Garip Duygudur Özlem</title>
		<link>http://www.tunahan.net/2009/12/25/ne-garip-duygudur-ozlem/</link>
		<comments>http://www.tunahan.net/2009/12/25/ne-garip-duygudur-ozlem/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 20:20:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[beklemek]]></category>
		<category><![CDATA[beklerken]]></category>
		<category><![CDATA[hasret]]></category>
		<category><![CDATA[özlem]]></category>
		<category><![CDATA[sevda]]></category>
		<category><![CDATA[sevgili]]></category>
		<category><![CDATA[yar]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=112</guid>
		<description><![CDATA[Eğer kavuşamamak varsa ucunda yakıcı bir ateştir özlem. Kıvranırsın, iki büklüm olursun, zifiri karanlıkta yolunu kaybetmiş bir yolcu gibi dolanırsın.Günler akar. Yemek yersin, şakalaşırsın, uyursun, uyanırsın.. O hep damarlarında gezen, bir türlü kurtulamadığın bir kor parçası gibidir.El ayak çekilince ana rahmindeki bir bebek gibi kıvrılır yatarsın. Artık sadece içinde yüzdüğün özlem denizi ve sen varsındır. [...]]]></description>
			<content:encoded><![CDATA[<p><span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 10pt; padding: 0px; margin: 0px;"><span style="color: #000000;">Eğer kavuşamamak varsa ucunda yakıcı bir ateştir özlem. Kıvranırsın, iki büklüm olursun, zifiri karanlıkta yolunu kaybetmiş bir yolcu gibi dolanırsın.<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />Günler akar. Yemek yersin, şakalaşırsın, uyursun, uyanırsın.. O hep damarlarında gezen, bir türlü kurtulamadığın bir kor parçası gibidir.<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />El ayak çekilince ana rahmindeki bir bebek gibi kıvrılır yatarsın. Artık sadece içinde yüzdüğün özlem denizi ve sen varsındır. Sanki damarlarındaki ateş dışarıya çıkmış seni çepeçevre sarmış ve sen en korunmasız halinle en korunaklı yerde özlemin ateşten denizinde yüzersin. <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />Eğer kavuşamamak varsa ucunda, sevdiği çiçekleri koklarsın, sevdiği şarkıları dinlersin. <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" /><br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />Hele bir de dönülemeyecek bir yerdeyse&#8230; İşte o zaman sen ateş olursun.okluğunu, gidişini, hayatından sanki hiç yaşamamış gibi çıkıp gidişini kabullenemezsin. Zifiri karanlıklarda yol alırsın kim bilir ne zamana kadar. En çok canının yandığı an aslında yeni bir yolu adımlamaya başladığını anladığın andır. Unutmaya başlarsın. Yüzünü, ellerini, dokunuşunu, gülüşünü yavaş yavaş kaybettiğini anlarsın. Karanlıkta uzaklaşan bir gölge gibi ardından bakarken aslında tan yerinin de ağardığını fark etmezsin bile.<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />Eğer birazcık umut varsa içinde özlemin, işte o zaman içindeki kor sevda ateşine döner. Canın yine yanar ama her kavuşmada yüreğinde güller açar.<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />Kavuşursun. İçindeki ırmak taşar sel olur, çağlayan olur uçurumlardan akarsın. Azcık uzaklaşsa azgın bir deniz gibi kabarır öfkesi özlemin. Olmadık davranışından olmadık anlamlar çıkarırsın. Kimse sakinleştiremez seni, yanarsın kül olursun. Ne sevda sözleri dindirir acını ne dost sesler&#8230;<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" /></span></span><span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 10pt; padding: 0px; margin: 0px;"><span style="color: #000000;"> Birbirinizin hiç bir şeyi iken aslında birbirinizin her şeyi olmuşsunuzdur artık. Ne kadar mı sürer? Kim bilebilir ki.<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" /></span></span><a style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: underline; color: #93b609; padding: 0px; margin: 0px;" title="beklemek" href="http://caponiko.deviantart.com/art/beklerken-69448690" target="_blank"><img style="margin-top: 0px; margin-right: 10px; margin-bottom: 5px; margin-left: 10px; outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; border: 0px initial initial;" src="http://www.renklidergi.com/upload/p47e0d96200cb39.36530349.jpg" alt="beklemek" width="250" height="377" align="right" /></a><span style="color: #000000;"><br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" /></span><span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 10pt; padding: 0px; margin: 0px;"><span style="color: #000000;">“Gözlerine bakıyorum <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />hangi uzaklara gittiler <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />sen bana akan aşk damlası <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />bitti diyorsun <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />dikenli teller düşsün araya<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />…<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />İçimi çekince <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />yangın başladı her bir hücrede <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />anımsadım bir geçmişim vardı benim <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />anımsadım bir dünya içindeyim <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />gecede çırılçıplak bir iç sızısı <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />…<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />Aşk bir kurgudur <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />öyle diyecekler <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />herkes konuşabilir ve bu herkesin başında <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />oysa ne garip <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />tattığım zehirle yalnız ölüyorum <br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />ve benzersiz bir çiçek soluyor yanı başımda” *<br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" /><br style="outline-style: none; outline-width: initial; outline-color: initial; padding: 0px; margin: 0px;" />* Neşe Yaşın / Aşk Sarkacı</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2009/12/25/ne-garip-duygudur-ozlem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rüveyda&#8217;ya Ağıt</title>
		<link>http://www.tunahan.net/2009/12/24/ruveydaya-agit/</link>
		<comments>http://www.tunahan.net/2009/12/24/ruveydaya-agit/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 21:05:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Şiir Gezegeni]]></category>
		<category><![CDATA[adımda]]></category>
		<category><![CDATA[Ağıt]]></category>
		<category><![CDATA[attığı]]></category>
		<category><![CDATA[aziz]]></category>
		<category><![CDATA[baldıran]]></category>
		<category><![CDATA[bırakan]]></category>
		<category><![CDATA[değilim]]></category>
		<category><![CDATA[gövdesi]]></category>
		<category><![CDATA[gündüz]]></category>
		<category><![CDATA[Rüveyda'ya]]></category>
		<category><![CDATA[siyah]]></category>
		<category><![CDATA[ürküten]]></category>
		<category><![CDATA[yanında]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=107</guid>
		<description><![CDATA[Rüveyda'ya Ağıt

ben bir aziz değilim 
hele gündüz değilim 
attığı her adımda siyah bir iz bırakan 
bir yanında ürküten bir baldıran gövdesi 
bir yanımda kederi özümleyen bir lale 
merhamet sahrasının uyuyan gecesiyim 
bırakta böyle bitsin bu günahkar serüven 
bırakta kurtarayım bu emanet sarayı 
yeter intiharınla oyduğun yüreğimi 
umutsuz şarkılarla avutulduğun yeter.....]]></description>
			<content:encoded><![CDATA[<p style="font-size: 12px; text-decoration: none;"><strong style="font-weight: bold;"><span style="font-size: small;"><span style="color: #000000;">Rüveyda&#8217;ya Ağıt</span></span></strong></p>
<p><span style="color: #000000;">ben bir aziz değilim<br />
hele gündüz değilim<br />
attığı her adımda siyah bir iz bırakan<br />
bir yanında ürküten bir baldıran gövdesi<br />
bir yanımda kederi özümleyen bir lale<br />
merhamet sahrasının uyuyan gecesiyim<br />
bırakta böyle bitsin bu günahkar serüven<br />
bırakta kurtarayım bu emanet sarayı<br />
yeter intiharınla oyduğun yüreğimi<br />
umutsuz şarkılarla avutulduğun yeter</span></p>
<p><span style="color: #000000;">göğsümde bir yanardağ kıvranıyor rüveyda<br />
yaraları kapandıkça kanıyor rüveyda<br />
duman çöktü güneşin sitem aynalarına<br />
aralandı perdeler şimdi sensiz değilim<br />
dertliyim, viraneyim, ben bir aziz değilim<br />
azizler tohum eker sevgi tarlalarına</span></p>
<p><span style="color: #000000;">senin gözlerin dram, oysa ağlatan benim<br />
ben dilenci, sen sultan sevgi dağıtan benim<br />
sen ışık ben karanlık ve aydınlatan benim<br />
ben ölümüm sen hayat cana can katan benim<br />
sabah sende oluyor güneşi tutan benim<br />
soran ben sorulan sen hüznü damıtan benim<br />
öldüren ben ölen sen kabirde yatan benim<br />
sen, sevda yüklü bulut, göklerimin sahibi<br />
saklıyorum içimde seni bir tufan gibi</span></p>
<p><span style="color: #000000;">nerde uğruna ömür verdiğim bela, nerde<br />
her hatıra bir demet zakkum meyhanelerde<br />
düşlerim esrsrınla çoğalan pervanedir<br />
götür benden ahzanı bana, ihsanı getir<br />
yalanı reddederken düşüyorum yalana<br />
ben bir aziz değilim rüveyda anlasana</span></p>
<p><span style="color: #000000;">bu ağıdı öldüğün için söylemiyorum<br />
sen ölmedin rüveyda<br />
at vuruldu ben öldüm<br />
her hamlesi bir tabut şimdi bakışlarının<br />
yıkayıp kefenledim mehtabına gömüldüm<br />
duysun alem ateşin dağı erittiğini<br />
bu illetin daşları bile çürüttüğünü</span></p>
<p><span style="color: #000000;">gün olurda ayrılık yumağı çözülürmü<br />
bergüzarım ayaklar altında ezilirmi<br />
rüveyda görürmüyüm yeşil ufuklarını<br />
seninle bir sonsuzluk bulurmuyum rüveyda<br />
yoksa hep bu kabirde kalır mıyım rüveyda</span></p>
<p><span style="color: #000000;">(13.02.2001-İstanbul)<br />
Nurullah Genç </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2009/12/24/ruveydaya-agit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
