تجزیه و تحلیل حفره امنیتی Sql Injection

Sql Injection چیست ؟

» حفره امنیتی Sql Injection ، یک روش برای تست نفوذ می باشد که نفوذگر از عدم فیلترینگ مناسب سایت در قسمت فراخوانی اطلاعات از دیتابیس سوءاستفاده کرده و با وارد کردن دستورات خود که اصطلاحاً به آن Exploit گویند، اطلاعات مورد نظر خود را فراخوانی میکند !

 

چگونه بفهمیم یک سایت باگ Sql Injection دارد ؟

» ساده ترین روش برای فهمیدن اینکه سایت ما دارای این باگ هست یا خیر استفاده از ‘ در اخر چنین آدرسی در سایت هست :

 

» وقتی در سایت چنین ادرسی ?id=number پیدا کردیم احتمال اینکه سایت مورد نظر ما دارای باگ Sql Injection باشد هست، اما این تنها راه فهمیدن این باگ نیس و راهای دیگری هم دارد مانند استفاده از اسکنرها تشخصیص باگ (مثال : Acuntix, Nesus ,…)

 

راه حل رفع این باگ :

بهترین روش جلوگیری از این باگ فیلترگذاری در قسمت فراخوانی اطلاعات از دیتابیس هست..

 

برای این منظور مثلا Php توابعی را در اختیار ما گذاشته :

mysql_real_escape_string

sqlite_escape_string

 

» اما استفاده از این توابع کاملا مشکل را حل نمیکند برای مثال در این سایت www.site.com/index.php?id=12 میتوان برای id مشخص کرد که value ورودی ما باید حتما از نوع عددی (int) باشد با تابع intval یا is_numberic !

 

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

 

sanitize_text_field

 

جستجوی سایت های دارای باگ SQL Injection با ابزار Sqliv کلیک کنید !