PDA

View Full Version : سوال: جلوگیری از SQL injection در سی شارپ



vB.N3T
سه شنبه 16 آبان 1391, 12:56 عصر
سلام دوستان میخواستم بدونم چطور میشه در سی شارپ و پایگاه داده SQL
از تزیق کد های مخرب و حمله اینجکشن جلو گیری کرد
ممنونم :قلب:

Ahmad765
سه شنبه 16 آبان 1391, 18:51 عصر
از StoredProcedure استفاده کنید.

راه سختش هم escape کردن ' " -- # و ...
البته راه های سخت تری هم هست. اما SP بهترین و راحت ترین راه هست.

ایمان مدائنی
سه شنبه 16 آبان 1391, 19:31 عصر
دوست عزیز باید از پارامتر ها استفاده کنی

SqlConnection mySqlConnection = new SqlConnection("server=localhost;database=Northwind;uid=sa;pwd=sa");
mySqlConnection.Open();
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText =
"INSERT INTO Customers (" +
" CustomerID, CompanyName, ContactName" +
") VALUES (" +
" @CustomerID, @CompanyName, @ContactName" +
")";
mySqlCommand.Parameters.Add("@CustomerID", SqlDbType.NChar, 5);
mySqlCommand.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40);
mySqlCommand.Parameters.Add("@ContactName", SqlDbType.NVarChar, 30);
mySqlCommand.Parameters["@CustomerID"].Value = "J4COM";
mySqlCommand.Parameters["@CompanyName"].Value = "J4 Company";
mySqlCommand.Parameters["@ContactName"].IsNullable = true;
mySqlCommand.Parameters["@ContactName"].Value = DBNull.Value;
mySqlCommand.ExecuteNonQuery();
Console.WriteLine("Successfully added row to Customers table");

mySqlConnection.Close()

Sirwan Afifi
سه شنبه 16 آبان 1391, 21:07 عصر
اگه از LINQ استفاده می کنید خودش تمام کوئری هایش به صورت پارامتری هستند.

Sirwan Afifi
سه شنبه 16 آبان 1391, 21:09 عصر
این مطلب رو هم در این مورد مطالع بفرمائید: http://www.dotnettips.info/Post/360/%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-linq-to-sql