PDA

View Full Version : مشکل امنیتی SQL injection



ghaam91
جمعه 30 مهر 1395, 01:53 صبح
سلام
من توی صفحه جستجوم 2 تا مقدار رو میگیرم از کاربر که یکیش DropDownList هستش که لیست شهرهای دارای تورهای تعریف شده در دیتابیسمه.یکیم یک تکس باکس هستش که کلمه ی مورد جستجو رو میگرده که اگه مقدار هم وارد نشه فقط لیست تورهای شهر انتخاب شده درDropDownList رو نشون میده.
میگن که در بخش جستجوی تور من مشکل امنیتیSQL injection وجود دارد ولی متاسفانه من بلد نیستم رفعش کنم ممنون میشم کمکم کنین
این کدای مربوط به دکمه جستجوم
143100
این صفحه جستجوم
143101
اینم کدای صفحه ی جستجوم
143102

milad.biroonvand
جمعه 30 مهر 1395, 09:00 صبح
درسته مشکل داره.
کدی که نوشتی رو بصورت پارامتر وارد کن
select * from tproducts where fcodegroup=@fcodegroup and fname like @fcodegroup
و اگر بتونی نوع sqlcommand رو بصورت store procedure بزاری که خیلی بهتره.

ghaam91
جمعه 30 مهر 1395, 15:41 عصر
درسته مشکل داره.
کدی که نوشتی رو بصورت پارامتر وارد کن
select * from tproducts where fcodegroup=@fcodegroup and fname like @fcodegroup
و اگر بتونی نوع sqlcommand رو بصورت store procedure بزاری که خیلی بهتره.

نشد:ناراحت:از اینا @fcodegroup خطا میگیره:گریه:

mortezagt
جمعه 30 مهر 1395, 17:12 عصر
خطا رو بفرست ببینیم چی میگه

mortezagt
جمعه 30 مهر 1395, 17:13 عصر
ضمنا اون نوع جستجو کاملا نا امن و خطرناکه
از راهی که دوستمون در پست 2 گفته استفاده کن

mortezagt
جمعه 30 مهر 1395, 17:15 عصر
اینم اذافه کنم که شما بهتره از طریق کد نویسی به بانک متصل بشی و اون رو به دیتالیست وصل کنی
اینطوری مانور بهتری میتونی بدی و هم حرفه ای تر میشه کار

ghaam91
جمعه 30 مهر 1395, 18:22 عصر
سلام
الان این کد رو نوشتم ولی باز خطا میده
SqlDataSource2.SelectCommand = "select * from tproducts where fcodegroup=@fcodegroup and fname like @fname";

SqlDataSource2.SelectParameters.Clear();
SqlDataSource2.SelectParameters.Add("@fcodegroup", DropDownList1.SelectedValue.Trim());
SqlDataSource2.SelectParameters.Add("@fname", txtName.Text.Trim());


143114

Mahmoud.Afrad
شنبه 01 آبان 1395, 00:03 صبح
وقتی به صورت پارامتر ارسال میکنید، نوع مقدار ارسالی با نوع فیلد در دیتابیس باید یکسان باشد.(ستون fcodegroup هر نوعی دارد باید DropDownList1.SelectedValue.Trim() را هم به همان نوع تبدیل و ارسال کنید)