30 Mart 2010 Salı

Checking password strength with AJAX TK

Herkese merhabalar;

Bildiğiniz gibi günümüzde artık internet hesaplarımızda şifremizi kimseye söylememe çok da aşılamayan bir güvenlik tedbiri değil:). Şifrelerimizin de güçlülük derecesi çok önemli bir konu haline geldi.
Peki web uygulamalarımızda kullanıcıları daha güçlü şifreler yaratmaya nasıl zorlarız? Bunun cevabı AjaxControlToolkit içersindeki PasswordStrength kontrolünde saklı. Lafı fazla uzatmadan bu kontrolün özelliklerine bir bakalım;
  • HelpStatusLabelID : Girilen şifre için bazı kurallar belirleyeceğimiz için hangi kurallar sağlandı hangileri sağlanmadı onu görüntüleyeceğimiz label'in ID'si.
  • MinimumNumericCharacters : Şifrede en az kaç rakam olacağını belirliyoruz.
  • MinimumSymbolCharacters : Şifrede en az kaç alpha-nümerik karakter olacağını belirliyoruz.
  • MinimumUpperCaseCharacters : Şifrede en az kaç büyük harf olacağını belirliyoruz.
  • MinimumLowerCaseCharacters : Şifrede en az kaç küçük harf olacağını belirliyoruz.
  • DisplayPosition : Şifremizin gücü şifrenin neresinde gösterilsin.(RightSide | LeftSide)
  • PreferredPasswordLength : Şifremizin en kısa uzunluğu
  • RequiresUpperAndLowerCaseCharacters : Şifremiz küçük ya da büyük harf gerektiriyor mu? Eğer bu kontrolü false yaparsak MinimumUpperCaseCharacters ya da MinimumLowerCaseCharacters set etmemizin bir anlamı olmaz.
  • StrengthIndicatorType : Şifrenin gösterim şekli nasıl olsun belirler.(Text | BarIndicator)
  • TargetControlID : Şifremizin bulunduğu kontrolün ID'si.
  • TextStrengthDescriptions : Şifremiz için tanımladığımız kuvvet değerleri.
  • PrefixText : Şifremizin tanım değerleri için başlık belirleyebiliriz

Hemen bu kontrolün kullanımına bir göz atalım. Öncelikle AjaxControlToolkit.dll projemize referans edelim.

Sonra .aspx dosyamıza geçip ilgili assambly 'yi oraya da referans edelim.



4 <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>


Daha sonra kontrolümü ekleyelim ve gerekli sahaları tanımlayalım.

15 <ajaxToolkit:ToolkitScriptManager ID="script1" runat="server" />

16 <asp:Label ID="lbl" runat="server" Text="Şifrenizi Giriniz!">asp:Label>

17 <asp:TextBox ID="password" runat="server">asp:TextBox>

18 <br />

19 <asp:Label ID="strength" runat="server">asp:Label>

20 <ajaxToolkit:PasswordStrength
ID="PasswordStrength2" runat="server"

21 HelpStatusLabelID="strength"

22 MinimumNumericCharacters="1"

23 MinimumSymbolCharacters="1"

24 MinimumUpperCaseCharacters="1"

25 MinimumLowerCaseCharacters="1"

26 DisplayPosition="RightSide"

27 PreferredPasswordLength="8"

28 RequiresUpperAndLowerCaseCharacters="True"

29 StrengthIndicatorType="Text"

30 TargetControlID="password"

31 PrefixText="Şifre Gücü : "

32 TextStrengthDescriptions="Çok zayıf;Zayıf;Orta;Güçlü;Çok güçlü">

33 ajaxToolkit:PasswordStrength>



Şimdi browse edelim bakalım.


İstenilen bütün özellikleri tamamlayalım.

Görüldüğü üzere bizim istediğimiz özellikleri tamamladıkça kullanıcı şifresi de o kadar güçlü oluyor.

Herkese kolay gelsin :)

10 Mart 2010 Çarşamba

Regular Expressions in .Net Framework

Herkese merhabalar;

Regular expressions(düzenli ifadeler) bize textlerimizi üzerinde esnek ve güçlü kontroller yaratmamızı sağlıyor.Tasarladığımız desenler,string kullanan,dışardan veri alan uygulamalar için çok değerli bir tool olacaktır.Regex sınıfını kullanmak için önce kodumuza

System.Text.RegularExpressions

isim uzayını eklememiz gerekiyor.Kullanıma bir örnek şöyle;

34 public static bool checkExpression(string sentence)

35 {

36 string expression = "MyExpression";

37 Regex regex = new Regex(expression);

38 return regex.IsMatch(sentence);

39 }


Şimdi regular expression yazarken kullanacağımız karakterlere göz atalım.

"." karakteri :
Bu karakter kesinlike bir karakter yerine geçer.Örneğin;
İfademiz "a.b" olsun.Bu ifade textimizde solunda "a" ve sağında "b" olan 1 karakter arar.Yani textimiz "acb" olsaydı true döndürecekti."acnb" olsaydı false döndürcekti.

"$" karakteri :
Bu karakter textin sonunu ifade eder.Örneğin;
İfademiz "abc$" olsun.Bu ifade textimiz eğer "....abc" ile biterse true döndürür.

"^" karakteri :
Bu karakter textin başını ifade eder.Örneğin;
İfademiz "^abc" olsun.Bu ifade textimiz eğer "abc..." ile başlıyorsa true döndürür.

"*" karakteri :
Bu karakter bir önceki karakterden 0 ya da sonsuz tane gelebilir der.Örneğin;
İfademiz "zbc*" olsun.Bu ifade textimizde "zb" "zbc" "zbcccc" ifadesi varsa true döndürür.

"[]" karakteri :
Bu karakter bir liste içinden 1 tanesini seçer.Örneğin;
İfademiz "x[cv]b" olarak kullanılırsa textimizde "xvb" ya da "xcb" varsa true döndürür.
Eğer [a1-a2] olarak kullanılırsa. Mesela a[0-9]b olarak kullanılırsa textimizde "a0b"varsa true döndürür.Ancak "a09b" yi false döndürür.
Eğer [^a1-a2] olarak kullanılırsa.Mesela [^38a-z] olarak kullanılıtsa textimiz 3 ve 8 ile başlayamaz ama küçük harfle devam etmelidir.Textimiz "3t" ya da "8g" olsaydı false döndürecekti.

"()" karakteri :
Bu karakter ifadeleri gruplamakta kullanılır.Yukardaki ifadeleri gruplayarak kombinasyonlar elde etmemizi sağlar.Örneğin;
İfademiz "[0-9](ab)*" olsun.Textimiz şöyle olabilir."5" "5ab" "5ababab".

"|" karakteri :
Bu karakter bildiğimiz gibi "or" işareti.Örnek;
İfademiz "[Öyle | Böyle] de farketmez" olsun.Textimiz "Öyle de farketmez" ya da "Böyle de farketmez" olabilir.

"+" karakteri :
Bu karakter solundaki ifadeden 1 ya da daha fazla var demektir.Örneğin;
İfademiz [0-9](ab)+ olsun.Textimiz şöyle olabilir."5ab" "5ababab".

"?" karakteri :
Bu karakter bir karakteri ya da bir texti ifade edebilir.Solundaki karakterden ya da textten olabilir de olmayabilir de demektir.Örneğin;
İfademiz "C(ab)?D" olsun.Textimiz şöyle olabilir."CD" ya da "CabD".

"{}" karakteri :
Bu karakter kendisinden önceki ifadenin kaç kere kullanılabileceğini gösterir.Örneğin;
İfademiz A[0-9]{3} olsun.Textimiz "A056" ya da "A692" olabilir.Ya da ifademiz ba{3,4} olsun.Textimiz "baaa" ya da "baaaa" olabilir.

Hekese kolay gelsin :)

8 Mart 2010 Pazartesi

Linq to RDF

Herkese merhabalar;

Linq to RDF bize kodumuz içinde semantic query'ler yapmamızı sağlıyor.Temel olarak Linq to SQL'e benziyor.Farkı ise sorgularımızı SQL sorgularına değil SPARQL sorgularına çeviriyor.DOTNET entegrasyonu olduğu için aynı zamanda C# gibi bir güzelliğe sahip:) RDF(Resource Description Framework) dosyalarını LinqToRDF 'e eklediğimizde aynı zamanda UML notasyonu olarak da görebiliyoruz.Şu anda visual studio 2008 'e entegre çalışıyor.Buradan download edebilirsiniz.Daha geniş bilgi için de buraya bakabilirsiniz.

Herkese kolay gelsin:)