Captcha ile güvenliğinizi güçlendirin!

by Doğan ÇAKMAK 7. Mart 2009 08:14

Captcha nedir? Soldaki resimde de görmüş olduğunuz gibi insanların okuyarak anlayacağı karakterlerin oluşturdu resimdir diye kabaca tanımlayabiliriz. Aslında Captcha "Carnegie Mellon School of Computer Science" tarafından başlatılmış bir proje fakat ben işin web kısmı ile ilgilenerek uygulamarından bir tanesini göstereceğim.

Captcha ne gibi faydalar sağlar? Geliştirmiş olduğunuz web uygulamalarında kullanıcıların girdi yaptığı bölümleri kontrol altına almazsanız sitesiniz ve veritabanız bazı saldırılara mağruz kalabilir. Örneğin bir forum sitesini ele alalım. Forumda yazılmış bir yazıya cevap yazmak istiyorsunuz. Biraz araştırmayla eğer kontrolü yapılmıyorsa o yazıya kod ile milyonlarca girdi yapabilirsiniz. Fakat captcha kullanırsanız kod captcha resmindeki karakterleride tanımaya zorlayacaksınız.

Captcha karakterleri kodla çözülemez mi? Çözülebilir! O zaman niye kullanıyoruz diyeceksiniz. Ben de size şöyle cevap vereyim: En güvenli bilgisayar, sahip olmadığınız bilgisayardır! Yani güvenli bilgisayar ya da sistem diye birşey yoktur. Az güvenli ve çok güvenli sistemler vardır.

ASP.NET yazılım geliştiricileri için bir captcha kontrol önermek istiyorum. clearscreen.com tarafından geliştirilen bir captcha kontrolü. Web uygulamalarınızda sürükle bırak yaparak kullanabileceğiniz bir kontrol. Kontrol ddl'sini bu bağlantıdan indirebilirsiniz.  Kontrol kullanımında zorluk yaşarsanız bu iletiye yorum bırakabilirsiniz. Böylece sorun yaşayan başka insanlara da aynı anda cevap vermiş olurum. 

İyi çalışmalar dilerim ;)

 

ASP.NET için SQL Injection' dan korunma yolları

by Doğan ÇAKMAK 6. Mart 2009 14:55

Geliştirdiğim websitelerden bir tanesine üç tane hacker arkadaşın saldırmasından sonra güvenliğe gereken önem vermeye başladım. Tam olarak ne zaman güvenliğin üzerine ciddi olarak eğilmeye başladığımı hatırlamıyorum fakat öğrendiğim bazı şeylerin olgunlaştığını düşündüm ve günlüğüme birşeyler karalamak istedim. Bu yazım SQL Injection'dan korunmak için yapılması gerekenlerinlerin başlıklarından ve ipuçlarından oluşacak. Vereceğim bilgiler güvenilir kaynakların taranması sonucu olgunlaşan veriler. Eğer SQL Injection üzerine detaylı bir araştırma yaparsanız benim ulaştığım önemli noktalara ulaşabilirsiniz. Yazımda yararlandığım kaynaklar:

  • Hacking Exposed Web 2.0: Web 2.0 Security Secrets and Solutions (ISBN: 978-0-07-149461-8) 
  • MSDN
  • http://asp.net


SQL Injection nasıl yapılır?

Veritabanında yaptığınız insert, update, delete gibi komutlara kullanıcı girdisinin müdehale etmesiyle gerçekleşir. Müdehale etmesi derken, saldırıyı yapan kişi veritabanı üzerinde yönetici olarak yapılabilecek bütün işlemleri gerçekleştirebilir. Hatta veritabanını silebilir... SQL Injection' nın verebileceği zararları anlatan onlarca kaynak var. Bu yüzden ben bu kaynakların araştırılması sonucu derlenmiş çözüm başlıklarını vereceğim. Bahseceğim çözüm önerilerini araştırdığınızda yapmanız gerekenleri öğreneceksiniz. Ama araştırmadan önce de bir klavuza ihtiyacınız var. İşte çözüm yolları:

 

1. Querystring Verilerini Kontrol Ettirin

Kullanıcılar sayfalar arasında veri transferi için kullandığınız querystring değerlerini görebilirler. Bunun için bu verileri kontrol ettirmeden SQL komutlarınızın içinde kullanmamanız gerekir. Örnek vermek gerekirse: bir tablonuzdan ID değerini baz alarak "ad" diye bir veri çektireceksiniz. Tablonuzu oluştururken ID değerini integer olarak tanımladınız. ID'nin bir integer mı yoksa tipik bir sql injection cümleciği olan ' OR 1=1 -- mi olduğunu kontrol ettirmeniz gerekir. Bu örnek için ID' nin bir integer mı yoksa string mi olduğunu kontrol ettirebilirsiniz. Böylece string veri türünde kullanıcı querystring'e değer atadığında kodunuz hata verecektir.

Bu verdiğim örnek sadece bir senaryo için geçerli. Güvenlik söz konusu olduğu zaman bütün ihtimalleri göz önünde bulundurarak önem alın ve asla kullanıcı girdilerine güvenmeyin! Querystring'lerden gelen saldırıları önlemek için "sql injection querystring" anahtar kelimeleri ile google da arattığınız zaman bahsettiğim korunma yöntemi ile ilgili bilgiye sahip olacağınızı düşünüyorum.

 

2. Parametreler Kullanın

Yukarıda verdiğim ID örneğinden gidersek anlatacağım husus daha iyi anlaşılır. C# kullanarak iki türli sql komutu yazabilirsiz:

Birinci örnek: "SELECT * FROM tablo_test WHERE ID='" + ID + "'"; 

İkinci örnek:  "SELECT * FROM tablo_test WHERE ID=@ID";

Bu ikinci örnekte @ID diyerek ID' nin değerinin bir parametreye atıyorsunuz. Bunun yapmak ne işinize yarayacak? Eğer birinci örnekteki gibi yaparsanız kullanıcı girdisi olan ID değeri direk olarak SQL komutuna dahil olacaktır. Eğer kullanıcı biraz art niyetli biriyse ve ID değerine ' OR 1=1 gibi şeyler yazarsa bütün kayıtları görebilecektir. Eğer bu SQL komutu bir login kontrolü için yapılıyorsa bunu yazan kişi sisteme giriş yapabilecektir.

Bunu engellemek için ikinci örnekteki gibi parametre kullanmalıyız. Böylece ASP.NET' e şunu söylemiş oluyoruz: Kullanıcıdan gelen değer sadece parametre değeridir, bir SQL komutu değildir. Böylece ASP.NET sayfamızda buna göre davranarak hata verecektir.

Anlattığım hususun kodlarını ve gerçek uygulamasını görmek için "sql injection sql parameter" anahtar kelimelerini aramanız için öneririm.

 

3. Hata Mesajlarını Gizleyin

Saldırı yapanlar genellikle sisteme hata verdirerek veritabanı bilgilerini öğrenmeyi hedeflerler. Eğer sistemin verdiği hataları cömertçe kullanıcılara gösteriyorsanız ASP.NET sayfanız saldıranlara eğitim içerikli hatalar verecektir. Bu verilen hatalar içerisinde tablo ve field isimleri geçtiği zamanda saldıran kişinin yapması gereken şey doğru SQL komutu ile saldıyı yapmak. Bunun olmasını engellemek için web.config dosyasındaki customErrors tag'ı aşağıdaki gibi olmalıdır:

<customErros mode="On" defaultRedirect="Hata.aspx" />

Böylece sistem bir hata verdiği zaman kullanıcıya eğitici ve açık verici hata sayfaları yerine Hata.aspx  sayfasını göstermiş olacaksınız.

Detaylı bilgi için "sql injection customErrors" anahtar kelimelerini öneririm.

 

4. Şüpheli Karakterleri Temizleyin

SQL komutlarınıza  müdehale ederek veritabanınıza zarar verebilecek komutları engellemek için şüpheli karakterleri temizlemeniz gerekir. Bazı şüpheli karakterler:

"\"", "\\", "/", "*", "'", "=", "-", "#", ";", "<", ">", "+", "%"

Özellikle querysting değerlerinde bu temizlemeyi yapmanızı öneririm. Fakat belirttiğim gibi kullanıcı tarafından gelen bütün girdiler için yukarıda bahsettiğim önlemleri almanız gerekmektedir.

 

Sonuç

Eğer web üzerine uzmanlaşmak istiyorsanız bu söylediğim önerilere kulak vermenizi öneririm. Kullanıcılara yaptığınız uygulamaları açmadan önce sql injection saldırılarına karşı bu önlemleri almazsanız ileride telafisi olmayan sonuçlarla karşılaşabilirsiniz. Bu yazımda sql injection saldırılarına karşı alınabilecek önlemlerin ipuçlarını vermeye çalıştım. Umarım sql injection önlemlerini öğrenirken bu yazı sizlere yol gösterici olur. Başka bir güvenlik yazısında buluşmak üzere...

 

Internet Explorer açığı bugün yamanacak

by Doğan ÇAKMAK 17. Aralık 2008 10:46

Dünyanın en büyük yazılım şirketinden yapılan açıklamada, otomatik üncellemeyle aktif hale gelecek bu yamanın TSİ 20.00’de yayımlanacağı belirtildi.

Dünyanın en çok kullanılan web tarayıcısının sahibi Microsoft, normal güvenlik güncellemesini gelecek ay yapacak.

İnternet güvenlik uzmanları, dünyanın en yaygın kullanılan web tarayıcısı İnternet Explorer’da büyük bir açığın bulunduğunun ortaya çıkmasının ardından, sorun giderilinceye dek kullanıcılara başka bir internet tarayıcısı kullanmaları salık vermişlerdi.

İnternet uzmanları, Microsoft’un İnternet Explorer tarayıcısındaki açığın, internet korsanlarına özellikle Çince web sitelerini kullananların bilgisayarlarını ele geçirme ve şifrelerini çalma imkanı verebileceğini belirtmişlerdi.

Microsoft da yaptığı açıklamada, tarayıcının en yaygın şekilde kullanılan yedinci versiyonuna (IE7) yönelik saldırılar tespit ettiklerini kaydederek, ancak diğer versiyonların da potansiyel tehlike altında olduğu uyarısında bulunmuştu. Yayınlanacak yama Internet Explorer’ın 5, 6, 7 ve 8 (beta) sürümlerini yamayacak. Açık, Internet Explorer yazılımının uygulama kütüphanesinde bulunan “ole32db.dll” adlı dosyadan kaynaklanıyor. Açık, Microsoft’un Microsoft Update ve Microsoft Yükleme Merkezi üzerinden yayınlanan yamayla giderilecek. 

Kaynak: NTVMSNBC

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Güvenlik | İnternet

Internet Explorer’da ciddi güvenlik açığı

by Doğan ÇAKMAK 17. Aralık 2008 10:17

Microsoft’un gidermek için üzerinde çalıştığı açık, kullanıcıların gezinti yaptıkları siteler üzerinde çalıştırılan kodlar sayesinde kullanıcıların şifrelerinin çalınmasına olanak tanıyor. Açık Internet Explorer 7.0 için geliştirilmiş olsa da, yazılımın önceki sürümleri için de uyarlanabilir bir karaktere sahip.

Uzmanlar, yalnızca Internet Explorer sürümlerini etkileyen açık nedeniyle, kullanıcıların Microsoft tarafından yayınlanacak bir güvenlik yamasının piyasaya sürülüşüne kadar Mozilla Firefox, Apple Safari, Google Chrome, Opera gibi alternatif yazılımları kullanmasını salık veriyor. Trend Micro tarafından yayınlanan rapora göre, geçtiğimiz hafta ortaya çıkan açıktan yararlanmak amacıyla 10 binden fazla İnternet sitesinin kodları değiştirildi.

Özellikle Çince İnternet sitelerinde faydalanılan açık, şimdilik sadece bilgisayar oyunlarında kullanılan şifreleri çalmak amacıyla kullanılıyor ancak, tekniğin ters mühendislik (reverse engineering) ile farklı amaçlarla da kullanılabileceği ifade ediliyor.

Uzmanlar tüm internet tarayıcı yazılımlarının açıklara karşı savunmasız olduğunu ancak, korsanların genellikle daha çok kullanılan yazılımlara yönelik saldırılar yaptığını belirtiyor. Microsoft’un açık ortaya çıktıktan sonra kısa bir süre içinde giderilememiş olmasını başarısızlık olarak tanımlayan PC Pro dergisinin güvenlik editörü Darien Graham-Smith, zararlı yazılımın yüklenmiş olduğu bir çok internet sitesine erişimin açık olduğunu, en kısa sürede kullanıcıların farklı bir tarayıcı kullanmaları gerektiğini ifade ediyor.

Kaynak: NTVMSNBC

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Çözüm Önerileri | Güvenlik | İnternet | Web Gelişimi

Kablolu klavyeler de güvenli değil

by Doğan ÇAKMAK 24. Ekim 2008 02:32

NTVMSNBC' nin özellikle teknoloji köşesini yakından takip ediyorum ve okuduğum bir haberi sizlerle paylaşmak istedim. Haberin sonundaki bağlantıya tıklayarak deneyin videoları izleyebilirsiniz. Deneyde kablolu klavye ile "trust no one" yani "kimseye güvenme" yazılıyor Smile

İSTANBUL - LASEC/EPFL’de bulunan İsviçre Güvenlik ve Kriptografi Laboratuvarı’nın iki araştırmacısı Martin Vuagnoux ve Sylvain Pasini’nin yaptıkları çalışma, kablolu klavyelerden 20 metre uzaklıktan, arada duvar olsa bile yazılan yazıların deşifre edilebildiğini gösteriyor.

Araştırmacıların PS/2 ve USB bağlantısına sahip klavyeler ile gerçekleştirdikleri deneyler, bankamatik klavyeleri gibi deşifre edildiği zaman büyük sorunlar yaratabilecek verilerin girildiği klavyelerin de tehlike altında olduğunu gösteriyor.

Araştırmacıların elektromanyetik dalgaları dinleyerek yaptıkları deneyler ve sonuçları http://lasecwww.epfl.ch/keyboard/ adresinde hem yazı, hem de video olarak sergileniyor.

 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Güvenlik



powered by discountasp.net

Ne yapıyorum?

Microsoft yazılım araçlarını kullarak eğitim sektörüne yönelik web tabanlı uygulamalar geliştiriyorum.

Örnekleri az olan konsept projelerin geliştirilmesinde aktif görev alıyorum.

Proje Yönetimi, Yazılım Yönetimi ve Web Güvenliği üzerine çalışıyorum.

Calendar

<<  Eylül 2010  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

Anahtar Kelimeler