![]() | ||||||
Floodlara karşı güvenlik resimleri | 24.11.2004 | |||||
| Kategori : ASP.NET Özet : Birçok uygulamada kullanabileceğiniz güvenlik resimlerinin oluşturulmasını anlatan faydalı bir döküman. | ||||||
Merhabalar. Bu yazımda, çoğumuzun web projelerinde ihtiyaç duyabileceği, önemli bir güvenlik ayrıntısını irdeliyeceğiz. Bir çok üyelik gerektiren websitelerinde gördüğümüz, güvenlik resimlerinin nasil oluşturulacağını inceleyeceğiz.
Öncelikle dikkat etmemiz gereken noktalara bakalim. Amacımız herhangi bir program tarafindan okunamayacak, image processing ya da benzeri algoritmalarla yorumlanamayacak fakat buna karşılık, gerçek bir kullanıcı, bir insan tarafindan çok kolay anlaşılabilecek resimler oluşturmak. Bunun için yapabileceklerimiz:
· Yeterli derecede background ve text kirliliği, dağınıklığı sağlamak · Mümkün olduğunca birbirinden farklı, birbirine benzemeyen resimler kullanmak · Olabildiğince çok resim kullanmak · Resimlerin dosya büyüklüklerini (file size) mümkün olduğunca birbirine yakın hatta aynı boyutta tutmak.
Son iki madde, gerçekten çok dikkat edilmesi gereken bir özellik. Bir çok sitede,bu tarz resimler 20-30 adetle sınırlandırılmış ve de hepsinin dosya boyutları faklı olan resimler kullanılmakta. Bunların çoğunluğu image processing gibi işlemlere okunması zor olan resimler olsa da, designerlarin gözden kacırdıkları, cok daha büyük bir güvenlik açığı yaratmakta. Dosyaların büyüklükleri ve içerisindeki yazılar bir kez tespit edildikten sonra, bir program aracılığı ile flood işlemleri rahatlıkla gerçekleştirilebilir.
Peki, yapabileceğimiz ne var? Bu konuda en iyi çözüm; resmi run-time da random olarak oluşturmak ve bu şekilde içeriğindeki yazıyı kontrol etmek. Yani, örneğin, sayfa her refresh olduğunda, yeni bir kod, bu kodun resimsel, kirletilmiş, anlaşılması güçleştirilmiş hali ve de her seferinde aynı dosya adında, yaklaşık olarak aynı dosya boyutunda yeni bir resim üretmek.
Aşağıda kodunu gördüğümüz Img classı textten image oluşturmak için bütün işlemleri gerçekleştirmekte.
Kodda da gördüğümüz gibi öncelikle graphics object kullanarak bir resim oluşturduk, arka alanını doldurduk, textin fontunu, formatini belirledik, texte bir path belirleyip bir perspektif ve açı kazandırdık ve son olarak, resmimize gürültü ekledik. ıstenirse, bu class çok daha geliştirilebilinir. Mesela : textin, back groundun ya da gürültünün rengi random olarak değiştirilebilinir, font-family random atanabilir....
İşte bu kadar, geriye kalan iş; bu classı çağıracak uygun web formları oluşturmak. Bunun için de iki ayrı web forma ihtiyacımız var. Bir tanesi resimi yaratacak olan img clasını çağıracak ve bir image gibi davranacak olan web form, diğeri de default.aspx olan, kodu random olarak üreten, girilen kod ile doğruluğunu test eden ve de içerisine image web formunu <img> tagı ile çağıran formumuz.
JpegImage.aspx.cs
Gördüğümüz gibi, JpegImage.aspx.cs img classını çağırarak 200*50 bir resim oluşturmakta. Default.aspx.cs
Default.aspx.cs’de gördüğümüz gibi, page refresh olduğunda random bir sayı üretir. Ben bu sayının 6 rakam olmasını uygun görüyorum. 000000’dan 999999’a kadar 1milyon farklı resim elde edebiliriz, bu da fazlasıyla memnuniyet verici bir sayı. Session objesine attığımız textimizi, postback sırasında kontrol ederek, girilen değerle doğruluğunu karşılaştırıyoruz.
Son olarak, default.aspx’e de bakalim.
JpegImage.aspx’i <img> tag i ile cagirarak, projemizi tamamliyoruz. Hepimize iyi calismalar.
Kıvanç ÖZÜÖLMEZ | ||||||
Yazgelistir.com | ||||||