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

برگرد به عقب

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

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

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

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

تفاوت گرافیک نقشه بیتی و برداری

تفاوت گرافیک نقشه بیتی و برداری

در دنیای دیجیتال گرافیک ها به دو نوع نقشه بیتی (Bitmap ) و یا برداری ( vector ) تقسیم می شوند .... بیشتر

مراحل تولید انیمیشن چیست ؟

مراحل تولید انیمیشن چیست ؟

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

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

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

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

CSS -سی اس اس چیست ؟

CSS -سی اس اس چیست ؟

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

jQuery چیست ؟

jQuery چیست ؟

در تعریف jQuery باید اینگونه بیان کرد که اگر به نظر شما Prototype یک روش مناسب برای بسط دادن جاوا... بیشتر

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

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

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

چند نکته برای بهبود وضعیت کسب و کار

چند نکته برای بهبود وضعیت کسب و کار

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

کاتالوگ فلش در خدمت تبلیغات

کاتالوگ فلش در خدمت تبلیغات

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