راه های جلو گیری از تزریق SQL چیست ؟

Sunday, February 5th, 2017

 SQL چیست و راه های جلوگیری از آن کدام است ؟ تزریق
SQL چیست و راه های جلوگیری از آن کدام است ؟ تزریق

تزریق SQL INJECTION ) SQL ) خیلی مشابه با تزریق هدر ایمیل است. یک حمله تزریقی سعی می کند تا شرایط ساختگی را به درون یک کوئری SQL قرار داده تا سعی کند به داده های شما دسترسی پیدا کرده و یا آن ها را خراب کند . شاید معنی کوئری زیر را بتوانید به راحتی درک کنید :

SELECT * FROM users WHERE username = xyz AND pwd = abc

این الگوی ساده برای یک برنامه ورود است. اگر کوئری یک رکورد پیدا کند که در آن username برابر با xyz و pwd برابر با abc باشد می دانید یک ترکیب صحیح از کلمه عبور و نام کاربری ارسال شده و بنابر این ورود با موفقیت انجام می شود. تمام چیزی که یک مهاجم نیاز دارد تا بتواند یک شرط اضافی را تزریق کند به این صورت است :

SELECT * FROM users = xyz AND pwd = abc OR 1 = 1

در این جا OR به معنی این است که لازم است تنها یکی از شرط ها صحیح باشد و بنابر این ورود با موفقیت انجام می شود حتی اگر یک نام کاربری و کلمه عبور صحیح استفاده نشود.تزریق SQL روی کوتیشن ها و دیگر کاراکترهای کنترلی بستگی دارد که هنگام دریافت یک کوئری از یک متغیر یا ورودی کاربر به خوبی به کاراکتر فرار تبدیل نشده باشند.چند استراتژی وجود دارد که می توانید از آن ها برای جلوگیری از تزریق SQL استفاده کنید که به موقعیت بستگیدارند : 1 - اگر متغیر یک عدد صحیح باشد ( برای مثال کلید اصلی یک رکورد ) از is_numeric() و عملگر کست کردن (int) استفاده کنید تا مطمئن شوید که قرار دادن یک کوئری امن است. 2 - اگر از MySqli استفاده می کنید قبل از قرار دادن هر متغیر درون کوئری هر متغیر را به متد real_escape_string() بدهید. 3 - معادل PDO برای real_escape_string() متد quate() است اما با همه بانک های اطلاعاتی کار نمی کنداسناد همراه PDO استفاده از quate() را توصیه می کنند از دستورات آماده استفاده کنید. 4 - از یک دستور آماده )Prepared Statement) استفاده کنید. در یک دستور آماده ا نگه دارهایی در کوئری SQL نشان دهنده مقادیری است که از ورودی کاربر می آیند. کد PHP به صورت خود کار رشته ها را درون کوتیشن قرار داده و کوتیشن های داخلی و دیگر کاراکتر های کنترلی به کاراکتر فرار تبدیل می شوند. چگونگی استفاده برای MySQL و PHP متفاوت است . 5 - هیچ کدام از استراتژی های قبلی برای نام های ستون مناسب نیستند زیرا نام های ستون نباید درون کوتیشن قرار بگیرند. برای استفاده از یک متغیر برای نام های ستون یک آرایه از مقادیر قابل استفاده ایجاد کرده و بررسی کنید آیا مقدار ارسال شده در آرایه وجود دارد و اگر وجود داشت آن را درون کوئری قرار دهید.

برگرد به عقب

آخرین نوشته :
مقالات بیشتر :

SEO - سئو یا بهینه سازی وب سایت چیست ؟

SEO - سئو یا بهینه سازی وب سایت چیست ؟

بهینه سازی وب سایت یکی از حیاتی ترین بخش ها در مدیریت وبسایت است که مدیران سایت ها می بایست توجه... بیشتر

فایل فلش یا فرمت فلش چیست ؟

فایل فلش یا فرمت فلش چیست ؟

( فلش - flash ) تکنولوژی پویا نمایی دو بعدی و تا اندازه ای سه بعدی است . که بر پایه الگوریتم... بیشتر

باید ها و نبایدهای طراحی وب سایت

باید ها و نبایدهای طراحی وب سایت

وب سایت ها امکانات جالبی در دنیای امروز هستن که در هر ساعت از شبانه روز و بدون تعطیلی در خدمت... بیشتر

روش هایی برای داشتن یک بنر تاثیر گذار

روش هایی برای داشتن یک بنر تاثیر گذار

در دنیای امروز به موازات رشد تجارت و اقتصاد نیاز به تبلیغات نیز در حال رشد است. تبلیغات به یکی از... بیشتر

شاخص alexa - شاخص الکسا چیست؟

شاخص alexa - شاخص الکسا چیست؟

شاخص های بسیاری برای وب سایت ها وجود دارند که هر یک هدف جداگانه ای را از سنجش وب سایت ها دنبال... بیشتر

برنامه ادوبی ایر ( Adobe Air ) چیست ؟

برنامه   ادوبی ایر ( Adobe Air ) چیست ؟

ادوبی ایر یک برنامه مکمل است که بر گرفته از عبارت Adobe Integrated Runtime میباشد و به توسعه... بیشتر

بهترین روش های تبلیغ کدام است ؟

بهترین روش های تبلیغ کدام است ؟

روش های مختلفی برای تبلیغ کردن وجود دارد که هر کدام کار کرد خود را دارند. روش های قدیمی تبلیغ از... بیشتر

موتورهای جستجوگر چگونه کار می کنند ؟

موتورهای جستجوگر چگونه کار می کنند ؟

وقتی جستجویی در یک موتور جستجوگر انجام می شود کاربران در حقیقت نتیجه کار قسمت های گوناگون موتور... بیشتر

زبان برنامه نویسی جاوا اسکریپت چیست ؟

زبان برنامه نویسی جاوا اسکریپت چیست ؟

HTML در واقع یک زبان نشانه گذاری (Markup) است , یعنی حاوی برچسب ها وتگ هایی می باشد که به دور... بیشتر