PDA

View Full Version : ایجاد امنیت برای یک کوری



pedram_ns
دوشنبه 24 مرداد 1390, 09:44 صبح
با سلام
من یک جستجوی پیشرفته ایجاد کردم به این صورت که کلمات وارد شده در یک فیلد رو تفکیک می کنم و با استفاده از ترکیب اون با فیلد های دیگه در نهایت یک کوری برای جستجو می نویسم

چطور میشه امنیت این کد رو ایجاد کرد


Dim query As String = "select * from" + tbl + "where" + ....
Dim con As New OleDbConnection(WebConfigurationManager.Connection Strings("ConnectionString").ConnectionString)
Dim selectsql As String = String.Format("{0}", Query)

در ضمن من می تونم در هنگام تفکیک کلمات برخی از اون ها رو حذف کنم برای جلوگیری از تزریق اسکیوال چه کاراکترهای رو خوبه که حذف کنم
در ضمن من با اکسس کار کردم لطفا راهنمایی بفرمایید

Saman Hashemi
دوشنبه 24 مرداد 1390, 10:15 صبح
به اينجا (http://barnamenevis.org/showthread.php?68209-%DA%86%D9%86%D8%AF-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-SQL-Injection)مراجعه كنيد...!

pedram_ns
سه شنبه 25 مرداد 1390, 15:53 عصر
راستش تو این تاپیک همش دعوا بود یه راه حل نهایی داده نشد من خودم بعضی کاراکتر ها رو فیلتر می کنم با این کد در این حد کافیه؟
راه بهتری دارید؟


Private Function SanitizeInput(ByVal input As String) As String
Dim badCharReplace As New Regex("[<>""'*!%;()&]")
Return badCharReplace.Replace(input, String.Empty)
End Function

البته بحث اصلی من در مورد پارامترها بود که در این روش نمیشه استفاده کرد.

nasinas
پنج شنبه 27 مرداد 1390, 00:24 صبح
کسی نظری نداره؟

دوست عزیز با ارسال پارامترها به یه store procedure (تابع در sql) میتونی تا حد زیادی از این حملات جلوگیری کنی
یا از validation ها استفاده کن
و در نهایت اگه میخوای امنیت بیشتر بشه از رمز کردن داده ها استفاده کن
از AntiXSS میتونی استفاده کنی که رشته رو کد میکنه بعد ارسال میکنه به سرور و قسمت های خطرناک رو خودش حذف میکنه و بعد میتونی از حالت کد درش بیاری
اگه یه سرچ کوچولو بزنی اطلاعات خیلی بیشتری پیدا میکنی
من در حد اطلاعات عمومی میدونم :)

pedram_ns
پنج شنبه 27 مرداد 1390, 11:58 صبح
ببینید من اول می خوام یک کد دارای مشکل بنویسم وبعد با تزریق اسکیوال اون رو هک کنم و بعد سعی کنم مشکل رو حل کنم این کد رو نوشتم:


Dim selectsql As String = "SELECT * FROM [company] WHERE user ='" + TextBox1.Text + "'"

این کد از یک تکس باکس نام کاربری رو میگیره و نشون میده حالا برای اینکه بتونم همه اطلاعات درون اون رو ببینم در تکس باکس مقدار زیر رو می نویسم:


admin' or '1'='1

و جواب میده

اگر امکان داره دوستان در مورد بقیه کد های مخرب مانند حذف دیتابیس که با این کد مچ باشه اشاره کنن تا ببینیم چطور میشه از اون ها جلوگیری کرد
برای مثال در مورد کد بالا ایا فقط تبدیل ' به '' کافیه؟

ممنون میشم دوستانی که تجربه دارن با این کد کار کنن تا ما مبتدی ها هم فیض ببریم

با سپاس از همه

MiladSe7en
جمعه 28 مرداد 1390, 17:08 عصر
دوست عزیز اگه برای Login استفاده میکنی پسورد رو Hash کن. و داخل کد کاراکتر ' رو حذف کن

pedram_ns
شنبه 29 مرداد 1390, 10:57 صبح
با سپاس
لطفا اگر امکان داره در مورد بقیه کدهای مخرب مثل حذف دیتابیس و ... هم بطور کامل بحث بشه یعنی کدهای مخرب مطابق با این کد داده بشه و بعد در مورد روش جلوگیریش هم بحث بشه و در نهایت یک کد کامل محافظتی ارائه بشه

با سپاس