PDA

View Full Version : جلوگیری از حملات sql در سی شارپ



mammad_asir
دوشنبه 30 آبان 1390, 20:53 عصر
ما یک صفحه login داریم که یوزر و پس رو میگیره در php قابلیتی به نام pdo است که از حملات sql جلوگیری میکند آیا سیشارپ هم همچین قابلیتی دارد.
اگر کسانی در این باره مطالبی دارند بگذارند تا استفاده کنیم
متشکر

Sp|R|T
دوشنبه 30 آبان 1390, 22:38 عصر
بله!

یک روش جلو گیری از وارد کردن کاراکتر های خطرناک و یا Replace کردن کاراکتر ها به کارکترهای دیگه

و روش دیگه ای اینکه مقدارهایی که برای sql فرستاده میشه رو انکریپت کنید ( MD5 ) و خوندنش هم دکریپت که این روش بسیار امنیت میره بالا

mammad_asir
سه شنبه 01 آذر 1390, 10:27 صبح
سلام اینها که شما بیان کردید روشهای دستی و حتی MD5 هم گاهی اوقات تبدیل به کامنت میشه میخوام بدونم تکنولوژی برای این کار هست که مثلا کارهای replaceو ... رو خودش انجام بده و یا کار رو راحت تر کنه

ardeshir1365
سه شنبه 01 آذر 1390, 10:36 صبح
و روش دیگه ای اینکه مقدارهایی که برای sql فرستاده میشه رو انکریپت کنید ( MD5 ) و خوندنش هم دکریپت که این روش بسیار امنیت میره بالا

سلام
دوست عزیز md5 یا هر الگوریتم hach دیگه اگه قرار بشه دکریپت بشه که امنیت نداره
پس md5 هم دکریپت نمیشه

ferankyy
سه شنبه 01 آذر 1390, 12:33 عصر
استفاده از Linq

Hajivandian
سه شنبه 01 آذر 1390, 16:19 عصر
استفاده از SqlCommand.Parameters (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx)

Sp|R|T
سه شنبه 01 آذر 1390, 16:57 عصر
سلام
دوست عزیز md5 یا هر الگوریتم hach دیگه اگه قرار بشه دکریپت بشه که امنیت نداره
پس md5 هم دکریپت نمیشه

بنده منظورم استفاده از MD5 بخاطر این هستش که کاراکترها بصورت کد شده ارسال بشه و یا اینکه چک بشه !

یعنی من اگر در یک تکست باکس که مثلآ مربوط به صفحه لوگین هستش را یک کاراکتر ' را وارد کنم، این کاراکتر مستقیمآ داخل دیتابیس چک نشه ! اول این کاراکتر تبدیل به MD5 یا هش بشه سپس اون الگریتمی که بدست اومده رو داخل دیتابیس چک و یا اینسرت و یا ....کنه !

مزیت بسیار بالای این کار اینه که هیـــــــــــــــــــــچ کاراکتری مستقیمآ وارد دیتابیس نمیشه ! و تزمین میکنم امنیت دیتابیس 99.99.99% خواهد بود ( 0.00001 شاید کشف کردن)

و اینکه شما عرض میکنید هر hash یی که دکریپت بشه امنیت نداره، میگویم حق با شماست ولی این چیزی و یا متودی که من مطرح کردم قرار نیس کسی بخواد هشی رو دکریپت کنه ! چرا ؟ چون کسی نمیتونه هشی که وارد دیتابیس شده رو بکشه بیرون ( بجز خوده پروگرمر و یا حالا ادمین خوده برنامه )

مشکل اکثر برنامه نویسان و طراحان وب اینه که میان اطلاعات داخل sql رو فقط کد میکنن که اگر کسی از تریق تزریق کد، اطلاعات دیتابیس رو بدست آورد نتونه دکریپت کنه (بگو هر چقد هم قوی باشه ولی یه روز دکریپت میشه ) و حالا من اینو میگم باید یه کاری که کرد اصلآ کسی نتونه اطلاعات رو از دیتابیس بگیره ( مهرامانه هارو میگم)

که بحث MD5 که آوردم بخاطر همین بود؛

=======> اعداد، کارکترها، حروف ها و ... اول انکریپت کنه سپس بصورت انکرپت شده توی دیتابیس چک کنه

وسلام :دی

s3rv3r
سه شنبه 01 آذر 1390, 20:43 عصر
txt_user.text.replace("'","")

مسخره بازيه كه نام كاربرو هم بيايي كد كني.

شما نزار كاراكتر ' تو رشته باشه ديگه نيازي به كد كردن نيست كسي كه بدوني SQL Injection يعني چي ديگه نيازي به اين همه كار نداره.
اقا شما يه متد بنويس كه كاراكتراي خطري SQL رو پاك كنه از رشته وروديت همين.



select uid from users where username='{0}' and password ='{1}'

Normal
{0} = admin
{1} = adminpass
select uid from users where username='admin' and password ='adminpass'

Attacker
{0} = admin
{1} = adminpass' or '1'='1
select uid from users where username='admin' and password ='adminpass' or '1'='1'
hacked