Ana Sayfa
Forumlar
Blog
Hakkımızda
Yükleniyor. Lütfen bekleyin ...
Kategoriler
ASP.NET
ADO.NET
Visual Basic .NET
Visual C# .NET
Visual Studio ve Araçlar
Windows Server System
Office System
.NET Framework
SQL Server
XML Web Servisleri
Yazılım Güvenliği
Yazılım Mühendisliği
Mobil Teknolojileri
Dynamics
Smart Client
Expression Studio
Silverlight
Kod Parçaları
Açık Kaynak Kodlu Uygulamalar
İş Zekası
Windows Mobile Embedded
0
Çıkış Yap
Üyelik Bilgilerimi Güncelle
Seminerlerim
Favorilerim
Ajanım
Yazgeliştir
Yazar olmak ister misiniz?
Forumlar
Kitap Önerileri
Haberler
Röportajlar
Yazarlar
İpuçları
Görüşleriniz
Hakkımızda
İstatistikler
En son kayıt olan üye:
mustafa2424
Şuanki online üyeler (
2
) :
tyaramis
,
brsturk
ASP.NET Kategorisi
»
Dinamik Doğrulama ve Güvenlik Resmi Oluşturma
Dinamik Doğrulama ve Güvenlik Resmi Oluşturma
Print Versiyonu
Yazar:
Coskun SUNALI
Tarih:21.11.2005
Puan:
4,27
(Oy Kullanan:
37
)
Okuma Sayısı:
2199
Makaleyi İşaretle
Makale Özeti
Web sitelerinin kullanıcıdan bilgi alınabilmesi için gerekli olan form bölümleri oldukça önemlidir. Ziyaretçilerin fikirlerini almak, misafir defterinizi imzalatmak, sipariş almak gibi her türlü işlemin yapılabileceği formlar bir süre öncesine kadar bizi hiç sıkıntıya sokmasa da, son zamanlarda oldukça yaygınlaşan "texasholdem" gibi "Dot Com" şirketlerinin reklamlarını bu yolla yapmaya başlaması sonucu yönetici arabiriminizde onaylanmayı bekleyen "yüzlerce" yorumla ve ya siparişle karşılaşabilirsiniz.
Makale
Web sitelerinin kullanıcıdan bilgi alınabilmesi için gerekli olan form bölümleri oldukça önemlidir. Ziyaretçilerin fikirlerini almak, misafir defterinizi imzalatmak, sipariş almak gibi her türlü işlemin yapılabileceği formlar bir süre öncesine kadar bizi hiç sıkıntıya sokmasa da, son zamanlarda oldukça yaygınlaşan "texasholdem" gibi "Dot Com" şirketlerinin reklamlarını bu yolla yapmaya başlaması sonucu yönetici arabiriminizde onaylanmayı bekleyen "yüzlerce" yorumla ve ya siparişle karşılaşabilirsiniz.
Bu reklam yönteminin altında yatan tek basit yöntem web sitelerindeki linkleri takip ederek formları bulan ve formları reklamlarla doldurarak otomatik olarak post eden basit uygulamalardır.
Peki bu gibi sorunlara uygun olarak ne gibi çözümler yaratabiliriz? Aslına bakarsanız bu sorunun tek bir çözümü var, o da sitenizde formun oluşması sırasında random olarak oluşturulacak ve kullanıcıdan içeriğinin birebir olarak bir form alanına yazılması istenecek bir resimdir. Daha önce böyle bir kullanım tarzıyla mutlaka karşılaştığınızı düşünerek yapacağımız işlemi kısaca anlatmak istiyorum.
Öncelikli amacımız ICR gibi teknolojilerin kullanılmasıyla okunması mümkün olmayacak, dolayısı ile yalnızca bir insanın okuyabileceği görünürlükte bir resim dosyası oluşturmak. Bu resim dosyasının üzerinde harfler ve rakamlardan oluşan random bir yazı olacak. Bu resim oluşturulduğunda üzerindeki yazıyı bir Session içerisine atacağız. Sayfamızın üzerinde bu resmi ve kullanıcının resimde gördüğü yazıyı yazabileceği bir TextBox oluşturacağız ve girilen değeri Session üzerinde tuttuğumuz değer ile karşılaştırıp
sitemizi ziyaret eden kişinin gerçekten bir insan mı yoksa bir bilgisayar programı mı olduğuna karar vereceğiz
.
Birinci adım olarak yeni bir ASPX dosyası oluşturarak bu dosyanın bizim için ilgili resmi üretmesini ve bu resmi response olarak göndermesini sağlayalım. Ben bu işlem için "GuvenlikResmi.aspx" isminde bir dosya oluşturacağım. Dosyanın HTML içeriğinde herhangi bir değişiklik yapmanıza gerek yok fakat isterseniz
@ Page
satırı haricindeki tüm satırları silebilirsiniz. Şimdi de sayfamızın kodunu tam olarak aşağıdaki gibi yazalım:
using System;
using System.Collections;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
public partial class GuvenlikResmi : System.Web.UI.Page
{
protected void Page_Load( object sender , EventArgs e )
{
// Güvenlik kelimesinin uzunluğudur.
const int UZUNLUK = 5;
// Güvenlik kelimesinde kullanılacak karakterler dizesidir.
string[] m_Karakterler = new string[] {
"A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" ,
"J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" ,
"S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" , "0" ,
"1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"
};
// Random olarak rakam oluşturabileceğimiz Random class'ının tanımlanmasıdır.
Random m_Random = new Random ();
// Boş güvenlik kelimemizdir.
string m_GuvenlikKelimesi = String.Empty;
for ( int i = 0 ; i < UZUNLUK ; i++ )
{
// Random oluşturulan rakamın index olarak kabul edilip, m_Karakterler dizesinden ilgili karakterin alındığı satırdır.
m_GuvenlikKelimesi += m_Karakterler[m_Random.Next ( m_Karakterler.Length - 1 )];
}
// Güvenlik kelimesinin Session'a eklendiği satırdır.
Session.Add ( "GuvenlikKelimesi" , m_GuvenlikKelimesi );
// Resim çizme işleminin yapıldığı bölümdür.
Bitmap m_Resim = new Bitmap ( 100 , 20 );
Graphics m_Grafik = Graphics.FromImage ( m_Resim );
Font m_Font = new Font ( "Tahoma" , 10 , FontStyle.Italic );
Brush m_FircaMavi = new SolidBrush ( Color.Blue );
Brush m_FircaBeyaz = new SolidBrush ( Color.White );
m_Grafik.FillRectangle ( m_FircaBeyaz , 0 , 0 , m_Resim.Width , m_Resim.Height );
m_Grafik.DrawString ( m_GuvenlikKelimesi , m_Font , m_FircaMavi , new PointF ( 2 , 2 ) );
// Resmin ekrana gönderildiği bölümdür.
Response.ContentType = "image/gif";
m_Resim.Save ( Response.OutputStream , ImageFormat.Gif );
}
}
Tarayıcımızı kullanarak resmimizi kontrol edelim:
Sayfamızı yenileyelim:
Görmüş olduğunuz gibi, her seferinde farklı olmak üzere, 5 karakter uzunluğunda bir kelimeyi resim olarak gösterdik. Şimdi de resmimizi kullanacağımız sayfamızı açarak Visual Studio üzerinde bu dosyamıza yeni birkaç kontrol ekleyelim:
Yorum TextBox'ımızı txYorum, Güvenlik Kelimesi TextBox'ımızı txGuvenlikKelimesi, Button kontrolümüzü bnGonder ve Resim kontrolümüzü de imgGuvenlikKelimesi olarak isimlendirelim ve resim kontrolümüzün "ImageUrl" özelliğini yanında bulunan "..." butonuna tıklayarak "Select Image" ekranı aracılığı ile atayalım:
"Files of type" seçeneğinden "All Files" seçimini yapalım:
"All Files" seçimi sonrasında "Contents of folder" seçeneğinde daha fazla dosya belirecektir:
Buradan da "GuvenlikResmi.aspx" dosyasını seçelim ve tarayıcımızda bu dosyamızı çağıralım:
Şimdi de "bnGonder" butonumuzun "OnClick" event'ini aşağıdaki şekilde yazalım:
protected void bnGonder_Click( object sender , EventArgs e )
{
if ( Session["GuvenlikKelimesi"] == null )
{
Response.Write ( "Session bulunamadı. Yorumunuz ile ilgili işlem yapılamadı." );
return;
}
if ( txGuvenlikKelimesi.Text == Session["GuvenlikKelimesi"].ToString () )
Response.Write ( "Güvenlik kelimesi onaylandı. Yorumunuz ile ilgili işlem başarıyla tamamlandı." );
else
Response.Write ( "Güvenlik kelimesi onaylanamadı. Yorumunuz ile ilgili işlem yapılmadı." );
}
Artık uygulamamız hazır durumda. Şimdi Güvenlik Kelimesi alanına yanlış bir kelime girerek butona tıklayalım:
Son olarak da doğru kelimeyi yazarak işlemimizi tekrarlayalım:
Bir üstteki ekran görüntüsünde Güvenlik kelimesi ile resmin farklı değerlere sahip olduğunu görmektesiniz. Bunun sebebi resmin her refresh sonrası yeniden oluşturulmasıdır. Girilmiş olan "71WED" bir önceki oluşturulmuş ve ekranda gösterilen resmin değerine eşit olduğundan işlem tamamlanmış ve sonrasında başka bir değerle yeni bir resim oluşturulmuştur.
Kaynak kodları "Download" bölümünden indirebilirsiniz.
Coşkun SUNALI
http://sunali.com
Makaleyi nasıl buldunuz?
Makaleyi nasıl buldunuz?
Çok Kötü
Çok Yararlı
Görüşleriniz : (opsiyonel)
v2.4
Geri Bildirim (Feedback)
Site içerisinde yazılan tüm makalelerin yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.
Yazgelistir.Com Ekibi - 2006 -
Yazgelistir.com