PDA

View Full Version : مبتدی: آیا نیاز به رمز کردن QueryStringهای ساده هست؟



fa_karoon
جمعه 18 آذر 1390, 23:37 عصر
سلام دوستان
می دونم ممکنه سوالم یه کم مبتدی باشه اما می خوام مطمئن بشم
فرض کنید من یه سری محصولات دارم که لیست اونها رو نشون می دم بعد کاربر روی هر کدوم کلیک کرد ID اون رکورد (محصول) به صورت QueryString به صفحه مقصد فرستاده می شود تا در آنجا براساس این id جزئیات آن محصول نشان داده شود
حال سوال اینجاست که در این موارد ساده نیز نیاز به رمز کردن QueryString می باشد؟
اگر لطف کنید و بگویید در چه مواقعی نیاز به hash کردن QueryStringها می باشد بسیار ممنون می شوم
از توجه تان بسیار سپاسگزارم

ramin149
شنبه 19 آذر 1390, 08:24 صبح
در این مورد نیازی نیست چون اگر کاربر id دیگری وارد کند یک محصول دیگر رو نمایش می دهد و هیچ اتفاقی برای دیتابیس نمی افتد .

من در یکی از پروژه هام اطلاعات را در یک صفحه از کاربر می گیرم (اطلاعات باید حتما وارد شده باشد) و با query string به صفحه دیگر می برم حالا کاربر می تونه اون اطلاعات رو از آدرس با حذف گنه و اطلاعات نادرست را وارد پایگاه داده کنه پس در اینجا نیاز به رمز نگاری داریم .

Saman Hashemi
شنبه 19 آذر 1390, 09:14 صبح
در این مورد نیازی نیست چون اگر کاربر id دیگری وارد کند یک محصول دیگر رو نمایش می دهد و هیچ اتفاقی برای دیتابیس نمی افتد .
اتفاقا این یکی از مواردی هست که فرد حمله کننده میتونه ازش استفاده کنه چون میاد عدد با یه سری دستور قاطی میکنه و...
سعی کنید این پارامترها بطور واضح معنادار نباشه و با استفاده از رمزنگاری یا URLRewite این موارد تا حدودی عوض کنید و در هنگام استفاده ازین مقدار موارد امنیتی را رعایت کنید...!

fa_karoon
شنبه 19 آذر 1390, 09:30 صبح
اتفاقا این یکی از مواردی هست که فرد حمله کننده میتونه ازش استفاده کنه چون میاد عدد با یه سری دستور قاطی میکنه و...
سعی کنید این پارامترها بطور واضح معنادار نباشه و با استفاده از رمزنگاری یا URLRewite این موارد تا حدودی عوض کنید و در هنگام استفاده ازین مقدار موارد امنیتی را رعایت کنید...!
ابتدا از پاسخ هر دو عزیز ممنونم
اما یه توضیح دیگه این ID یی که من می فرستم بعد به صورت پارامتر برای یهStore Procedure فرستاده می شه. آیا باز هم نیاز هست که موارد امنیتی و رمزنگاری رو رعایت کنم؟
ببخشید می دونم یه مقدار سوالم ابتدایی اما می خوام مطمئن بشم
ممنونم

raziee
شنبه 19 آذر 1390, 09:37 صبح
اتفاقا این یکی از مواردی هست که فرد حمله کننده میتونه ازش استفاده کنه چون میاد عدد با یه سری دستور قاطی میکنه و...
سعی کنید این پارامترها بطور واضح معنادار نباشه و با استفاده از رمزنگاری یا URLRewite این موارد تا حدودی عوض کنید و در هنگام استفاده ازین مقدار موارد امنیتی را رعایت کنید...!
سلام.
خیلی حساسیت به خرج ندید.
همون Id کفایت میکنه و نیازی به کد کردن نیست.
چون این Id یک عدد دارای نوع هست(int,long,..) شما این مقداری رو که از QueryString میگیرید رو به یک متغیر از نوع مربوطه تبدیل میکنید و اون متغیر رو پاس میدید برای پرس و جد در دیتابیس. بنابراین اگه نتونه اون QueryString رو تبدیل کنه به هر دلیلی یعنی مقداری که ارسال شده صحیح نیست و شما باید اون رو مدیریت کنید.

اگر لطف کنید و بگویید در چه مواقعی نیاز به hash کردن QueryStringها می باشد بسیار ممنون می شوم
برادر ما معمولا از QueryString ها برای گرفتن یک مقداری استفاده میکنیم به همین خاطر (جز در برخی مواقع) اطلاعات رو Hash نمیکنیم چون دیگه نمیتونیم اون داده رو به حالت اول برگردونیم!!! منظور شما Encrypt کردن بوده که بتونید بعدا اون رو Decrypt کنید و به حالت اول برگردونید.
این در مواردی هست که شما نمیخواهید مقدار واقعی اون داده رو کسی مطلع بشه.

مهدی کرامتی
چهارشنبه 21 دی 1390, 10:54 صبح
ابتدا از پاسخ هر دو عزیز ممنونم
اما یه توضیح دیگه این ID یی که من می فرستم بعد به صورت پارامتر برای یهStore Procedure فرستاده می شه. آیا باز هم نیاز هست که موارد امنیتی و رمزنگاری رو رعایت کنم؟
ببخشید می دونم یه مقدار سوالم ابتدایی اما می خوام مطمئن بشم
ممنونم
در اين حالت نيازي به رمزنگاري نيست، چون موقع استفاده از sp ها sql injection ميسر نيست.

mohsen.nsb44
چهارشنبه 21 دی 1390, 11:46 صبح
دوستان منم یه کار مشابه انجام دادم مثلا زمانی که بر روی عنوان خبر کلیک میشه به یک صفحه دیگه منتقل میشه و بر اساس ای دی اون خبر متن اون خبر دیده میشه و یا در خرید محصوا همچین کاری انجام میشه
دوستمون با sp این کار رو انجام میده اما من
با دستور زیر این کار رو انجام دادم
sqldatasource1.selectCommand="select * from tbName where id='"+request.params[0].tostring()+"'";
با این دستوری که نوشتم چه خطراتی میتونه تهدید امیز باشه؟
برای اینکه خطری مواجه نشه به چه صورت باید تغییر بدم؟

TeacherMath
چهارشنبه 21 دی 1390, 11:57 صبح
باید از sp استفاده کنید.

alonemm
چهارشنبه 21 دی 1390, 16:45 عصر
دوستان منم یه کار مشابه انجام دادم مثلا زمانی که بر روی عنوان خبر کلیک میشه به یک صفحه دیگه منتقل میشه و بر اساس ای دی اون خبر متن اون خبر دیده میشه و یا در خرید محصوا همچین کاری انجام میشه
دوستمون با sp این کار رو انجام میده اما من
با دستور زیر این کار رو انجام دادم
sqldatasource1.selectCommand="select * from tbName where id='"+request.params[0].tostring()+"'";
با این دستوری که نوشتم چه خطراتی میتونه تهدید امیز باشه؟
برای اینکه خطری مواجه نشه به چه صورت باید تغییر بدم؟

به راحتی میتوان تمامی جدول شما رو متحول کرد.
همین کوئری رو در یک SP پیاده کنید و پارامتر تعریف کنید.