PDA

View Full Version : سوال: sql injection



niloofar13
شنبه 23 آبان 1394, 07:31 صبح
سلام من پروژه ای را در سی شارپ نوشته ام. همه عملیاتی که با دیتابیس کار می کنند با stored procedure نوشته شده اند به غیر از دو سه مورد. پارامترها در هر دو مورد با دستور sqlcommand.parameters.addwithvalue مقدار دهی شده اند. آیا این عمل می تواند تضمین کند که برنامه من از نظر sql injection امن است؟ اگر نه چه کارهای دیگه ای باید انجام بدم؟

juza66
شنبه 23 آبان 1394, 08:22 صبح
سلام

تایپیک خوب برای آموزش: http://www.dotnettips.info/Post/360/%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-linq-to-sql

قبلا بحث شده: http://barnamenevis.org/showthread.php?367330-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-SQL-injection-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7
%D8%B1%D9%BE (http://barnamenevis.org/showthread.php?367330-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-SQL-injection-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE)

niloofar13
شنبه 23 آبان 1394, 10:05 صبح
ممنون از پاسختون من در برنامم زیاد با دیتابیس کار میکنم و بخواهم دوباره همه کوئریهام را به link تبدیل کنم زمانبر است. میخوام بدونم استفاده از ado.net پارامتری به تنهایی می تواند امنیت سیستم را تامین کند و دیگر نیازی به تغییر دادن برنامه نباشد؟

محمد رضا فاتحی
شنبه 23 آبان 1394, 11:14 صبح
با استفاده از پارامتر و استورپروسیجر توی ado.net امنیت از لحاظ Sql injection برقراره....خیالتون تخت...

محمد رضا فاتحی
شنبه 23 آبان 1394, 11:15 صبح
این لینک رو هم بررسی کنید
http://www.codeproject.com/Articles/732429/ADO-NET-How-to-Prevent-SQL-Injection-Attack

juza66
شنبه 23 آبان 1394, 16:02 عصر
منظور دوستمون همون sp داری استفاده میکنی خوبه به شرطی مثه مثال زیر پارمتر استفاده کنی


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()