PDA

View Full Version : سوال: آیا این کد فیلتر خوبی برای حملات sql injection هست؟



reza69
جمعه 30 مهر 1395, 10:51 صبح
سلام
آیا این کد می تواند از sql injection جلوگیری کند؟
میتونید فیلتر های بهتری یا با سرعت بالاتری رو بهم معرفی کنید؟


if (txtemail.Text.Contains("select") || txtemail.Text.Contains("SELECT") || txtemail.Text.Contains("Select")
|| txtemail.Text.Contains("SElect") || txtemail.Text.Contains("SelecT") || txtemail.Text.Contains("drop")
|| txtemail.Text.Contains("Drop") || txtemail.Text.Contains("DROP") || txtemail.Text.Contains("where")
|| txtemail.Text.Contains("WHERE") || txtemail.Text.Contains("Where") || txtemail.Text.Contains("table")
|| txtemail.Text.Contains("TABLE") || txtemail.Text.Contains("Table") || txtemail.Text.Contains("delete")
|| txtemail.Text.Contains("DELETE") || txtemail.Text.Contains("Delete") || txtemail.Text.Contains("alter")
|| txtemail.Text.Contains("ALTER") || txtemail.Text.Contains("Alter") || txtemail.Text.Contains("update")
|| txtemail.Text.Contains("UPDATE") || txtemail.Text.Contains("Update") || txtemail.Text.Contains("sql")
|| txtemail.Text.Contains("SQL") || txtemail.Text.Contains("Sql"))
{ lblmessage.Text = "email eshtebah ast"; return; }

kamranetemadi
جمعه 30 مهر 1395, 11:19 صبح
نمیدونم تا چه حد ایمنی تضمین میکنه!!
فقط چرا ToLower() یا ToUper() استفاده نمیکنی؟؟
5 مدل حروف رو نوشتی...

reza69
جمعه 30 مهر 1395, 11:30 صبح
نمیدونم تا چه حد ایمنی تضمین میکنه!!
فقط چرا ToLower() یا ToUper() استفاده نمیکنی؟؟
5 مدل حروف رو نوشتی...
منظورتون از این 5 مدل کدوماست؟
تو لور و تو آپر هم به کار میره؟
من زیاد sql injection بلد نیستم.
میتونید فیلتر های بهتری یا با سرعت بالاتری رو بهم معرفی کنید؟

kamranetemadi
جمعه 30 مهر 1395, 11:46 صبح
منظورم اینه:
txtemail.Text.Contains("select") || txtemail.Text.Contains("SELECT") || txtemail.Text.Contains("Select")
|| txtemail.Text.Contains("SElect") || txtemail.Text.Contains("SelecT")

بجاش میتونی بنویسی
txtemail.Text.ToLower().Contains("select")

reza69
جمعه 30 مهر 1395, 11:53 صبح
منظورم اینه:
txtemail.Text.Contains("select") || txtemail.Text.Contains("SELECT") || txtemail.Text.Contains("Select")
|| txtemail.Text.Contains("SElect") || txtemail.Text.Contains("SelecT")

بجاش میتونی بنویسی
txtemail.Text.ToLower().Contains("select")
حتما برای touper هم این میشه

txtemail.Text.ToLower().Contains("SELECT")


شما میتونید فیلتر های بیشتری رو بهم معرفی کنید؟
نمیشه touper و tolower رو با هم مخلوط کرد و یه دستور ساده تر نوشت؟

ghaam91
جمعه 30 مهر 1395, 11:58 صبح
سلام
یعنی منم باید از این کدا استفاده کنم توی دستوراتم؟؟؟؟؟؟؟؟؟؟:اشتباه: :ناراحت:
http://barnamenevis.org/showthread.php?531468-%D9%85%D8%B4%DA%A9%D9%84-%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C-SQL-injection

kamranetemadi
جمعه 30 مهر 1395, 13:30 عصر
حتما برای touper هم این میشه

txtemail.Text.ToLower().Contains("SELECT")


شما میتونید فیلتر های بیشتری رو بهم معرفی کنید؟
نمیشه touper و tolower رو با هم مخلوط کرد و یه دستور ساده تر نوشت؟

یعنی چی ترکیب کرد؟
فقط کافیه یکیشو استفاده کنی

ولی در کل برای جلوگیری از sql injection بهتره برنامه نویسیتو چند لایه انجام بدی و از پروسجر استفاده کنی

Mahmoud.Afrad
شنبه 01 آبان 1395, 00:07 صبح
داده ها رو به صورت پارامتر ارسال کنید ، نیازی به این فیلترها نیست.

bomb23
شنبه 01 آبان 1395, 10:56 صبح
همونطور که دوستمون گفتند میتونید به وسیله پارامترها بررسی رو انجام بدید
http://stackoverflow.com/questions/3216233/what-is-passing-parameters-to-sql-and-why-do-i-need-it

یا اینکه از طریق entity framework با دیتابیس ارتباط برقرار کنید.

taze kar 1
شنبه 01 آبان 1395, 23:06 عصر
دستور Sleep رو کم گذاشتی خخخ:لبخند: