ورود

نسخه کامل مشاهده نسخه کامل : مدیریت در نوشتن query در سی شارپ



aliaghaaaaa
18-05-2010, 11:59
سلام.
من کد زیر رو تو سی شارپ نوشتم. جواب هم میده. ولی اگر داده های ورودی رو اشتباه وارد کنیم، پیام خطای زیر رو میده.
چکار کنیم که اگه داده اشتباه بود، error نده و بجاش به کاربر اعلام کنه که باید داده رو درست وارد کنه؟
ممنون.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پیغام خطا:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
:13::13::13::13::13::13::13::13::13::13::13::13::1 3:

pezhmax
18-05-2010, 16:28
باید فرم رو قبل از اجرای query ارزیابی کنی(Validation). با regular expression تقریبا همه نوع validation ای رو میشه انجام داد.
در ضمن این کدی که نوشت مثل آب خوردن inject میشه. تو وب باشه ملت سه سوت دیتابیس رو هوا میدن. حتما از sqlparameter استفاده کن. خود دات نت sql injection رو فیلتر میکنه.

aliaghaaaaa
18-05-2010, 18:52
سلام.
ممنون از لطفت ولی:
1- چطور ارزیابی کنم؟
2- regular expression چیه؟
3- inject یعنی چی؟
4- بازم ممنون.

pezhmax
18-05-2010, 20:29
1-ارزیابی کردن یک فرم یعنی کنترل ورودیهایی که توسط کاربر وارد میشوند و معمولا از طریق کنترلهای موجود در فرم به برنامه منتقل می شوند. این ورودیها باید از لحاظ نوع داده ای و طول داده با پایگاه داده مطابقت داده شوند و در صورت عدم وجود تطابق باید از اجرای عملیات درج یا اصلاح اطلاعات جلوگیری شده و پیامهای مناسبی به کاربر داده شود.

2- regular rxpression در واقع یک قاعده مبتنی بر رشته است که توسط بسیاری از زبانهای رایج امروزی پشتیبانی می شود. و توسط آن یک رشته ورودی را با یک الگوی خاص مطابقت می دهند. به عنوان مثال اگر بخواهیم کاربر یک شماره تلفن تهران را وارد کند می دانیم باید یک رشته شامل فقط عدد وارد کند و نیز شماره اول آن نباید شامل 0 یا یک باشد و در ضمن حتما باید 8 رقم باشد. برای اینکار یک الگو مانند ([9-0][9-0][9-0][9-0][9-0][9-0][9-0][9-2]) ایجاد کرده و با استفاده از کلاس RegEX موجود در دات نت آن را ارزیابی می کنیم. برای اطلاعات بیشتر کافی است این کلاس را در MSDN مطالعه نموه و یا برای اطلاعات بیشتر به فصل پانزدهم کتاب "چگونه با C# برنامه نویسی کنیم" ترجمه پروین صفاحی مراجعه نمایید.

3-sql injection تکنیکی است که توسط هکرها برای نفوذ به دیتا بیس سیستم از طریق فرمهای ورود اطلاعات استفاده می شود. به عنوان مثال query شما بعد از ورود کاربر به شکل زیر خواهد بود:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا اگر کاربر در تکست باکس پسورد به جای عبارت pass عبارت زیر را وارد کند :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

query شما به این صورت خواهد بود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در این صورت query شما به سه عبارت زیر تجزیه می شود :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


و این دستورات پشت سر هم در روتینی که خود شما نوشته اید پشت سر هم اجرا می شوند.

نتیجه عبارت دوم : دیگر جدول forooshande وجود ندارد.

aliaghaaaaa
19-05-2010, 13:33
سلام.
بسیار ممنون از لطف شما و جواب کاملی که دادید.