سلام دوستان من راهی میخوام که بتوان با آن ورودی های برنامه را کنترل کرد . برای جلوگیری از اینجکشن . و بعد به دیتابیس داده ها را بفرستیم.
سلام دوستان من راهی میخوام که بتوان با آن ورودی های برنامه را کنترل کرد . برای جلوگیری از اینجکشن . و بعد به دیتابیس داده ها را بفرستیم.
نیاز به کار خاصی نیست از Net 2. به بعد خودش این کار رو انجام میده البته به شرطی که اطلاعات بصورت پارامتر ارسال بشن.
SqlCommand cmd = new SqlCommand("Select * From TableName Where Id = @Id", conn);
cmd.Parameters.AddWithValue("@Id", textBox1.Text);
متوجه این مثال نشدم میشه بیشتر توضیح بدید.طوری که مثلا ; ' " ایم کاراکتر هارا در یک رکورد حذف کند .
من خیلی با مثالهای SQL Injection آشنا نیستم ولی یک مثال ساده میزنم
توی textBox1 متن زیر رو بنویسید
8 or 1=1
توی رویداد کلیک یک دکمه کد زیر رو بنویسید
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("Select * From tbl Where Id = " + textBox1.Text, conn);
da.Fill(dt);
dataGridView1.DataSource = dt;
حالا همین مثال رو بصورت زیر بنویسید
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("Select * From tbl Where Id = @ID", conn);
da.SelectCommand.Parameters.AddWithValue("@Id", textBox1.Text);
da.Fill(dt);
dataGridView1.DataSource = dt;
این بحث جلوگیری از SQL Injection فقط در Net. نیست و SQL Server هم این کار رو انجام میده.
منظورم این هست که اگر این کاراکتر ها در ورودی باشد برنامه ارور میدهد و خارج میشود.متوجه این مثال نشدم میشه بیشتر توضیح بدید.
حالا امکان داره با تشخیص کد اسکی این کار را انجام داد ؟؟؟ من بالای 20 تا سورس رو با #C در مورد دیتابیس خوندم. ولی چون همه رایگان بوده اند این مشکل را داشته اند. اگر پروژه اهی هست که نکات امنیتی درآن رعایت شود و در سایت باشد لطفا معرفی کنید.