راه های جلو گیری از تزریق 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 - هیچ کدام از استراتژی های قبلی برای نام های ستون مناسب نیستند زیرا نام های ستون نباید درون کوتیشن قرار بگیرند. برای استفاده از یک متغیر برای نام های ستون یک آرایه از مقادیر قابل استفاده ایجاد کرده و بررسی کنید آیا مقدار ارسال شده در آرایه وجود دارد و اگر وجود داشت آن را درون کوئری قرار دهید.

برگرد به عقب

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

چرا باید تبلیغ کنیم ؟

چرا باید تبلیغ کنیم ؟

چرا نباید تبلیغ کنیم ؟! تبلیغ کردن بخش مهمی از تجارت در دنیای امروز است.در واقع پس از نیاز سنجی و... بیشتر

مفهوم گرافیک وب چیست ؟

مفهوم گرافیک وب چیست ؟

تجربه نشان داده با وجود برنامه نویسی دقیق و اصولی و همچنین , اگر وب سایت شما در رتبه ای قابل قبول... بیشتر

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

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

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

تبلیغات دیجیتال چیست؟

تبلیغات دیجیتال چیست؟

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

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

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

تزریق SQL INJECTION ) SQL ) خیلی مشابه با تزریق هدر ایمیل است. یک حمله تزریقی سعی می کند تا... بیشتر

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

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

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

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

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

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

ساخت موشن گرافیک آموزشی

ساخت موشن گرافیک آموزشی

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

مزایا و محاسن استفاده از کاتالوگ دیجیتال

مزایا و محاسن استفاده از کاتالوگ دیجیتال

وقتی نام کاتالوگ را می شنویم همه ما بلا فاصله به یاد یک مجموعه کاغذ معمولا در ابعاد A4 که حاوی... بیشتر