ASP.NET Manuel HTML Input Kontrolü

26 Eyl 2008 In: ASP.NET, Güvenlik

http://www.talktalk-newsletter.co.uk/Images/PageImages/security.jpg

 

 

 

 

 

 

 

 

 

 

ASP.NET projelerimizde HTML kontrolleri sırasında güvenlikten dolayı karakterlerin filtrelenmesi bazı projelerimizde sorun yaratıyor.

Örneğin bir Gridview kontrolunde formdan gelen html inputlarına yer vermemiz gerekebilir ancak default olarak gelen bazı validating request değerlerinden dolayı problemler yaşabiliyor.

Bu problemleri aşmak için bazı yollar mevcut onları da şu şekilde sıralayabiliriz.

Her sayfamızın üst bölgesinde yer alan taglar arasına   ValidateRequest=”false” değerini ekleyip sayfadaki html kontrollerini göz ardı edebiliriz.

Fakat bu haliyle güvenlik problemlerine sebeb olacaktır.Gelen verinin güvenilirliğini önemsemiyorsanız kısaca bu şekilde problemi halledebiliriz.

Bir diğer yol ise HTML inputlarını forma giriş sırasında kendimiz bir kontrolden geçirmemiz olacaktır.

if (TextBox1.Text.Contains(”<script”))
{
throw new Exception(”Zararlı kod”);
}
else
{
Label1.Text = “Mesaj: ” + Server.HtmlEncode(TextBox1.Text);
}

TextBox'tan girdiğiniz değerler <script> ile başlayan zararlı bir javascript uygulaması olma ihtimaline karşı HtmlEncode fonksiyonunu kullanarak filtreleyebiliyoruz.

Tabi bu örnekleri sizler muhtemel gelebilecek güvenlik tehditlerine örnek olarak çoğaltabilirsiniz. 

 Kolay Gelsin :)

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

 

Çalışmalarımız da girilen değerleri kontrol etmek adına bir çok yöntem üretebiliriz.Şüphesiz ki AJAX ile de kullanıcı tarafından girilen değerlerin filtrelenmesine imkan tanıyan bir özellik mevcuttur.

FilteredTextBoxExtender adındaki özelliğimiz ile bir textbox'a girilen değerlerin sadece rakam,büyük harf,küçük harf duyarlı olmasını sağlayabiliriz.Böylelikle istenmeyen karakterleri kolayca engelleyebilir çalışmalarımız performansını ve güvenliğini bir kat daha arttırmış oluruz.

Bu uygulamamızı gerçekleştirmek için VS 2008 ve Framework 3.5 kullanıcılarına yönelik AjaxControlToolkit eklentisini kurulu olması gerekmektedir.Codeplex bağlantısını kullanarak yükleyebilirsiniz. 

Yeni bir web site projesi açıyoruz ve ardından 1 adet ToolScriptManager,1 adet TextBox,1 adet FilteredTextBoxExtender ekliyoruz.Bunu ister sürükle bırak olarak istersek de textbox tasks kullanarak ve Add Extender seçeneği ile TextBoxlara uygulanabilecek AJAX eklentilerini aktif hale getirebiliriz.

TargetControlID ile filtrelenecek ajax kontrolunun ID'sini belirtmelisiniz.FilterType kısmında ise filtrelemek istediğiniz türü belirtmelisiniz.ValidChars kısmında da ek olarak geçerli olmasını istediğiniz karakterleri belirtebilirsiniz. Bu kontrolleri FilteredTextBoxExtender özelliğinin Properties sekmesinde bulabilirsiniz.

Bu işlemlerin ardından TextBox Properties sekmesinde TextBox1_FilteredTextBoxExtender alt sekmesine gelip FilterType kısmından textboxa girilmesini istediğiniz uygun seçeneği seçiniz.Ben bu örnekte sadece rakamların girilmesini sağlayacağım.Kod bloğu aşağıdaki gibidir.

 

<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </cc1:ToolkitScriptManager>
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <cc1:FilteredTextBoxExtender ID="TextBox1_FilteredTextBoxExtender"
            runat="server" Enabled="True" FilterType="Numbers" TargetControlID="TextBox1">
        </cc1:FilteredTextBoxExtender>

 

Bu işlemin ardından projemizi çalıştırdığımızda textboxa sadece rakamların girilmesini sağlamış oluyoruz.Hem güvenlik hem de pratiklik açısında çalışmalarımızda bolca yer verebileceğimiz bir uygulamadır.

 

Olcay Kük 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

ASP.NET ile TC Kimlik Doğrulama

13 Tem 2008 In: ASP.NET
TC kimlik numaranızın geçerliliğini kontrol eden bir çalışma yapacağız.Bunu nerelerde kullanabiliriz sorusu ilk olarak aklımıza gelebilir.Genelde resmi kurumlarda gördüğümüz kayıt sırasında tc kimlik numarası isteme gibi yerlerde sıkça görüyoruz.Bizim buradaki amacımız TC Kimlik servisi hizmetine herhangi bir ücret ödemeden kendi çalışmalarımız için kullanabiliriz.Yapacağımız işler matematiksel işlemler ile girilen değerler arasındaki uygun sonuçların karşılaştırılması ve işlemin sürecinin o aşamadan sonra belli olmasına dayanıyor.Girilen TC Kimlik numaranısının geçerli olup olmadığı kontrol ediliyor.

Bu projede asp.net ajax özelliklerinden ajaxcontroltoolkit eklentilerinin bazılarından yararlanılmıştır.Sisteminizde sorunsuz çalışması için visual studio ya entegre olarak ajaxcontroltoolkit paketinide yüklemeniz gerekiyor.Çalışmamız C# kullanılarak hazırlandı.Geçerli olan sonuçlar bir MSSQL veritabanına kaydediliyor.Kimlik adında bir tablo ve TcKimlikNo adında bir sutün oluşturmanız gerekiyor.

İlk olarak yeni bir web site projesi açıyoruz.Projemize bir textbox , bir button ve bir label ekliyoruz.AJAX özelliklerinin çalışabilmesi için bir adet ToolScriptManager ve FilteredTextBoxExtender ekliyoruz.Hata mesajlarının kontrol için RequiredFieldValidator ekliyoruz ve uygun hata mesajlarını yazıyoruz.AJAX'ı kullanmamızdaki amaçlardan biri de istenmeyen değerlerin girilmesini önlemek amacıyla basit olarak kullanılmıştır.MaxLength değeri ile de 11 karakterden fazla karakter girilmesi engellenmiştir.Örnek olarak oluşturduğumuz default.aspx sayfası aşağıdaki yapıya benzeyecektir.

CODE
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
     <title>TC Kimlik Doğrulama</title>
</head>
<body>
<center>
     <form id="form1" runat="server">
     <div>
         <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
         </cc1:ToolkitScriptManager>
         <cc1:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server"
             FilterType="Numbers" TargetControlID="TextBox1">
         </cc1:FilteredTextBoxExtender>
         <asp:Label ID="Label2" runat="server" Text="TC Kimlik Numaranızı Giriniz"></asp:Label>
        

        

         <asp:TextBox ID="TextBox1" runat="server" MaxLength="11" style="text-align: justify" ></asp:TextBox>
         <asp:Button ID="Button1" runat="server"  OnClick="Button1_Click"
             Text="Kontrol Et" style="text-align: center" />
        

        

         <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
             ControlToValidate="TextBox1" ErrorMessage="Lütfen TC Kimlik Numaranızı Giriniz"></asp:RequiredFieldValidator>
        

         <asp:Label ID="Label1" runat="server"></asp:Label>
        

        

        

     </div>
     <p>
         &nbsp;</p>
     </form></center>
</body>
</html>


Default.aspx dosyasının görünümünü kendi isteğinize göre uygun css yapıları kullanarak şekillendirebilirsiniz.Ben temel olarak en basit halini hazırladım.

Default.aspx.cs dosyasına geçiyoruz.Burada tüm kontrol işlemlerini barındıracağız.Olumlu sonuçları bir mssql veritabanına kaydettireceğiz.

CODE
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


public partial class _Default : System.Web.UI.Page
{
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);

     protected void Page_Load(object sender, EventArgs e)
     {
        
     }

  

     protected void Button1_Click(object sender, EventArgs e)
     {
         int tckimlik;

        
         tckimlik = Convert.ToInt32(TextBox1.Text.Substring(0, 1)) + Convert.ToInt32(TextBox1.Text.Substring(1, 1)) + Convert.ToInt32(TextBox1.Text.Substring(2, 1)) +
             Convert.ToInt32(TextBox1.Text.Substring(3, 1)) + Convert.ToInt32(TextBox1.Text.Substring(4, 1)) + Convert.ToInt32(TextBox1.Text.Substring(5, 1)) +
             Convert.ToInt32(TextBox1.Text.Substring(6, 1)) + Convert.ToInt32(TextBox1.Text.Substring(7, 1)) + Convert.ToInt32(TextBox1.Text.Substring(8, 1)) +
             Convert.ToInt32(TextBox1.Text.Substring(9, 1));

         string son = Convert.ToString(tckimlik).Substring(1, 1);

         if (son == TextBox1.Text.Substring(10, 1))
         {
             Label1.Text = "GEÇERLİ";
            
                 SqlCommand cmd = new SqlCommand("INSERT INTO Kimlik (TcKimlikNo) VALUES (@TcKimlikNo) ", con);
                 cmd.Parameters.AddWithValue("@TcKimlikNo", TextBox1.Text);
                 SqlDataAdapter da = new SqlDataAdapter(cmd);
                 DataSet ds = new DataSet();
                 da.Fill(ds);
                 con.Open();
                 cmd.ExecuteNonQuery();
                 con.Close();
                 TextBox1.Text = "";
            
         }

      

         else
         {
             Label1.Text = "GEÇERSİZ";
             TextBox1.Text = "";
         }
     }
}



Bir Sqlconnection oluşturuyoruz ve web.config dosyasında oluşturacağınız veritabanı bilgilerini ve connectionstringi burada kısaca tanıtmak için kullanıyoruz.Button'un click click eventine kontrol işlemlerini yazıyoruz.Textboxa girilen rakamları tek tek kontrol edip iç işlem yapısında belirtilen algoritmaya uyup uymadığı kontrol ediliyor.Geçerli olduğu takdirde veritabanımıza kaydediyor.Kolay Gelsin ...

 

Yazan: Olcay KÜK 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Satranç - ASP.NET AJAX & Silverlight

10 Tem 2008 In: AJAX, ASP.NET

 

 

 

 

 

 

 

 

 

Satranç şüphesiz ki bir çoğumuzun vazgeçilmezleri arasındadır.Genelde online olarak birçok turnuva yapmış olanlarımız aramızda mutlaka vardır.

İşin yazılımcıları ilgilendiren tarafı ise ASP.NET AJAX ve Silverlight teknolojileriyle hazırlanmış Satranç oyunun kodlarını paylaşıyorum.

Umarım çalışmalarınıza aydınlatıcı nitelikte etkiler yapar.

Download 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

ASPhere ile Web.Config Düzenleme

5 May 2008 In: ASP.NET

ASP.NET'te web.config dosyasıyla ilgili işlemler yaparken bazen can sıkıcı durumlarla karşılabiliyoruz.Yapılacak ufak bir hatanın bile sayfalarımıza bir sorun olarak yansıyacağından tüm yazılımcılar haberdardır.

Bize bu karmaşalığa son verecek olan basit ve kullanışlı bir uygulama olan ASPhere ile sıkıcı web.config dosyası görünümünden uzaklaşabilir ve biraz daha sempatik bir arayüz ile çalışmalarınızı kolayca ve pratik bir biçimde hazırlayabilirsiniz.

 



Programın proje sayfasına bu bağlantıyı kullanıp ulaşabilir ve ClickOnce olarak download etmek için buradan,Windows Installer olarak download etmek için buradan bağlantı kurabilirsiniz.

 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Blog'dan

Biraz yazılım,biraz güvenlik,biraz da hayattan karalamalar ...


İletişim: ok@olcaykuk.com