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

برگرد به عقب

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

مفهوم تجارت الکترونیک چیست ؟

مفهوم تجارت الکترونیک چیست ؟

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

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

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

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

طراحی گرافیک چیست ؟

طراحی گرافیک چیست ؟

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

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

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

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

ترفندهای سئو برای همه فصول

ترفندهای سئو برای همه فصول

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

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

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

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

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

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

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

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

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

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

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

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

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