Bu makalede Stored Procedurelerin C# uygulmalarında nasıl güvenliği arttırdığını göreceğiz

 

Stored Procedureler uygulama mantığından çok sql mantığını kullanırlar ve bu da güvenliğin artması ve sql injection gibi saldırılara karşı bizi korur.

Bu makalede Stored Procedures Sql açıklamalarıyla nasıl kullanıldığını öğrenecez. Basit bir web form

kullanarak Class kullanarak SQl database'e bağlanmayı göreceğiz

 

İlk olarak Visual Studio içinde Server Explorer kullanarak databasemizi oluşturacaz. ilk olarak Visual Studioda

proje oluşturuyoruz. App_Data klosörüne Sql Server Database ekliyoruz. Bundan sonra Server Explorer Penceresi açılacak ve buradan tables klosörüne sağ tıklayarak 

yeni bir tablo ekliyoruz. bu tabloya ID,Name ve Age stunlarını ekliyecez ve türleri sırasıyla bigint, varchar(25), ve int olacak. ve ID sütünunu Primary Key ve 

Identity Specification sütünunu ayarlayıp tabloya isim verip kaydediyoruz.

 

Tabloyu kaydettikten sonra üzerinde sağ tuş yaparak Show Table Data yı tıklıyoruz Bikaç yeni veri ekliyoruz. Böylece bunları web form da gösterebilecez.

 

Şimdi Stored Procedure eklemeye başlıyalım. Stored Procedures klosörüne sağ tıklayıp Add New Stored Procedure Aşağıdaki kodları yazalım

 

CREATE PROCEDURE dbo.StoredProcedure1

/*

(

@parameter1 int = 5,

@parameter2 datatype OUTPUT

)

*/

AS

/* SET NOCOUNT ON */

RETURN

 

Bu kodlar Stored Procedure için temel kodlardır. Bizim istediğimiz Databaseden oluşturduğumuz verileri Stored Procedure ile göstermek. Böylece temel kodumuzu

aşağıdaki gibi değiştiriyoruz.

 

 

CREATE PROCEDURE dbo.GetAllData


AS

SELECT * FROM Table1

 

Stored Procedure kaydettiğimizde  CREATE ALTER olarak değişecek Burada yaptığımız Tablodaki bütün sütunları çekmek 

 

Sonrasında yapacağımız database için Bağlantı cümlesini oluşturmak. Bunu yapmanın en kolay yolu  toolboxtan SqlDataSource Controlünü projemize sürüklemek

sonrasında dropdown Databasimizi seçip ileri butonuna basıyoruz. Databaseden asterisk (*) özelliğini seçip ileri butonuna basıyor ve Finish butonun basıyoruz.

Şimdi Web.config klosörüne aşağıdaki gibi Connection String eklenmiş olması lazımdır. Şimdi SqlDataSource rahatlıkla silebiliriz. Eğer connection string aşağıdaki gibi 

eklenmemişse aşağıdaki gibi değiştirebilirsiniz.

 

 

<connectionStrings>

<add name="ConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

</connectionStrings>

 

Database bağlanmak için clasımızda connection stringi kullanacağız. connection stringi web.config klosöründe saklamamız güvenliğimiz açısından büyük önem taşımaktadır

Ayrıca ilerdeki değişiklikler için bu cümlenin web.config klosöründe bulunması bize büyük rahatlık sağlayacaktır.

 

Clasımızı oluşturmak içim Proje klosörümüzde sağ tuşu tıklayıp App_Code klasörünü ekliyoruz Bu klasörün içine Class ekliyoruz bu classın adını StoredProcedures olarak adalndırıyoruz

Clasımızı aşağıdaki gibi dolduruyoruz.

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;


using System.Data.SqlClient;

using System.Web.Configuration;


/// <summary>

/// Summary description for StoredProcedures

/// </summary>

namespace DBtutorials

{

public class StoredProcedures

{

public StoredProcedures()

{

}


/// <summary>

/// Gets all columns from Table1

/// </summary>

/// <returns>DataTable of all columns in Table1</returns>

public static DataTable GetAllData()

{

DataTable allData = new DataTable();

SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString());

try

{

SqlCommand cmd = new SqlCommand("GetAllData", connection);

cmd.CommandType = CommandType.StoredProcedure;


connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(cmd);

adapter.Fill(allData);

connection.Close();

}

catch

{

connection.Close();

}

return allData;

}

}

}

 

Bir sonraki adımda Repeater oluşturup verilerimiz bunun içinde göstereceğiz.

 

 

<form id="form1" runat="server">

<asp:Repeater ID="Repeater1" runat="server">

<ItemTemplate>

ID: <%# Eval("ID") %>

<br />

Name: <%# Eval("Name") %>

<br />

Age: <%# Eval("Age") %>

<br /><br />

</ItemTemplate>

</asp:Repeater>

</form>

 

 

 

Default.aspx sağ tuşu tıklayarak  Default.aspx.cs dosyasını açalım. 

şimdi kodları aşağıdaki gibi ekleyelim.

 

using System;

using System.Configuration;

using System.Data;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;


using DBtutorials;


public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

Repeater1.DataSource = StoredProcedures.GetAllData();

Repeater1.DataBind();

}

}

 

Projemizi çalıştırıp kodumuzun çalışıp çalışmadığını rahatlıkla görebiliriz.

 

Bu makale 409 kere okundu.

Share to Facebook Share to Twitter Share to MySpace Stumble It Share to Reddit Share to Delicious More...

 

   

aspnet-stored-procedurlerin-kullanimi



Linkler



Son Yorumlar

  • Erhan

    tam aradığım konu ama eksik...

  • zuleyha

    burcumu nasil okuyabilirim ...

  • kerem bora

    Maili dün yazmıştım, bugün ...

Twitter