نمایش نتایج: از شماره 1 تا 2 از مجموع 2

موضوع: معرفی SQL Injection Attacks و نحوه پیشگیری از آن

  
  1. #1


    خواننده
    تاریخ عضویت
    May 2006
    نوشته
    57
    سپاسگزاری شده
    4
    سپاسگزاری کرده
    9

    Icon13 معرفی SQL Injection Attacks و نحوه پیشگیری از آن

    بانکهای اطلاعاتی معمولا قلب یک وب سایت یا یک برنامه Web based و یا Web Enabled را تشکیل میدهند. زیرا اطلاعاتی که باید در سایت نمایش داده شوند در آنها ذخیره میگردد. بر اساس مدلهای مختلف برنامه سازی، ترکیبی از یک بانک اطلاعاتی و یک زبان اسکریپت یا کد نویسی و احتمالا چند لایه دیگر میتوان برنامه ای نوشت که مورد رضایت مشتری قرارگیرد و اورا قانع به پرداخت هزینه های برنامه نویسی نموده و از همه مهم تر کسب و کار ما را رونق دهد!.
    گاه با اینکه تمام جوانب برنامه نویسی را رعایت کرده ایم ممکن است متوجه وجود برخی حفره ها و یا خطاها در برنامه های خود شویم. در صورتی که این حفره ها به دلیل اشکالات موجود در ابزارهای استفاده شده در برنامه ما، مانند بانکهای اطلاعاتی باشند، میتوان به نصب SERVICE PACK ها و یا ارتقاء به نگارش جدید این برنامه ها مشکل را حل نمود، اما در اکثر موارد اشکال و حفره های موجود در یک برنامه وبی به اشکالات مربوط به "تزریق کدهای SQL" یا همان SQL Injection مربوط میشود....

    SQL Injection به چه کاری میگویند؟!

    همان طور که میدانید زبان SQL شامل دستوراتی است که انجام عملیات بر روی داده های یک بانک اطلاعاتی را فراهم مینماید. هر عملیات (Query) بر روی بانک اطلاعاتی میتواند شامل چندین دستور (Command) باشد. معمول ترین این دستورات عبارتند از: Select, Insert, Update و Delete.
    در صورتی که فردی بتواند بصورت غیر مجاز بر روی بانک اطلاعاتی ما با استفاده از این دستورات به اطلاعاتی دست پیدا کند یا اطلاعاتی وارد سایت نماید یا آنها را تغییر داده و یا احتمالا حذف نماید و این عمل را با استفاده از ضعف ما در تفکیک مقادیر ورودی های کاربر و دستورات SQL انجام دهد، اصطلاحا به این روش غیر مجاز اجرای دستورات SQL Injection Attack میگویند.


    مثالی از SQL Injection Attacks
    مثالها و ضعف های مختلفی را میتوان برای یک SQL Injection Attack بیان نمود، اما در ابنجا به یک نمونه ساده از نحوه عبور از یک فرم مخصوص اعتبار سنجی کاربران که به خوبی طراحی نشده آورده میشود.

    معمولا برای ورود به یک سایت از طریق یک فرم کلمه عبور و نام کاربری خواسته شده و مقادیر وارد شده در صفحه دیگری ارزیابی شده و در صورت صحت اعتبار، کاربر به صفحه اصلی انتقال داده میشود. صفحه ورود اعتبار کدی مانند مثال زیر دارد: <form name="frmLogin" action="login.asp" method="post">
    Username: <input type="text" name="userName">
    Password: <input type="text" name="password">
    <input type="submit">
    </form>

    اطلاعات فرم بالا پس از Submit به صفحه Login.asp ارسال شده و با کدی مانند آنچه در زیر آمده است مورد ارزیابی قرار میگیرد:
    <%

    dim userName, password, query
    dim conn, rS

    userName = Request.Form("userName")
    password = Request.Form("password")

    set conn = server.createObject("ADODB.Connection")
    set rs = server.createObject("ADODB.Recordset")

    query = "select * from users where userName='" &
    userName & "' and userPass='" & password & "'"

    conn.Open "Provider=SQLOLEDB; Data Source=(local);
    Initial Catalog=myDB; User Id=sa; Password="
    rs.activeConnection = conn
    rs.open query

    if not rs.eof then
    response.write "Logged In"
    else
    response.write "Bad Credentials"
    end if

    %>

    در مثال بالا در صورتی که Username و Password وارد شده حداقل یک بار در بانک اطلاعاتی وجود داشته باشند، کاربر جمله "Logged In" و در غیر این صورت عبارت "Bad Credentials" را مشاهده خواهد نمود.
    حال فرض کنید کاربر بجای وارد نمودن Username و Password خود عبارتهای زیر را تايپ نماید:
    Username: ‘ or True –
    Password: [Null]
    در اینصورت دستور اجرا شده SQL ما بر روی بانک اطلاعاتي بصورت زیر خواهد بود:
    select * from users where userName='' or True -– ' and userPass=''
    همان طور که ملاحظه ميشود در صورت اجرای این کد بر روی بانک اطلاعاتی، همیشه کاربر قادر به ورود به سایت بوده و جمله "Logged In" را مشاهده مینماید! ماجرا همیشه به این سادگی نیست، کاربران غیر مجاز نه تنها از طریق فرمها، بلکه از طریق تغییر Query String های صفحات وبی و یا مقداردهی بهCookie ها نیز قادر به ارسال دستورات مخرب SQL به بانکهای اطلاعاتی میباشند! و گاه میتوانند اطلاعات ما را کاملا حذف نمایند، تغییر دهند، دیتای جدید وارد کنند و یا اطلاعات ما را مشاهده و دریافت نمایند.
    بنابر این: همواره مراقب اجرای کدهای مخرب که از طریق کاربر به عنوان اطلاعات معمولي به سیستم تزریق میگردند باشید!

    برخی پیشنهادات برای جلوگیری و مقابله با SQL Injection Attacks:
    اگر ما به عنوان برنامه نویس وب، برنامه های خود را با دقت بیشتری بنویسیم، در اکثر مواقع میتوانیم جلوی حملات SQL Injection را بگیریم، معمولي ترین راه های مقابله با این نوع حملات میتواند شامل موارد زیر باشد:

    1- محدود کردن سطح دسترسی کاربری که با آن اطلاعات وب را برای کاربر از بانک اطلاعاتی استخراج مینماید، بدین منظور بهتر است به چنین نام کاربری، تنها سطح دسترسی SELECT و INSERT برای جداولی که به چنین سطح اجرای دستوراتی نیاز دارند داده شود.

    2- با استفاده از دستور Replace مقادیر مربوط به کوتیشن ‘ را پیش از ارسال مقادیر دریافت شده از طرف کاربر بر روی سرور، از جملات مربوطه حذف نماییم.

    3- کلمات کلیدی و معنادار برای SQL مانند: Drop, Delete, Update و – را از ورودی های دریافت شده از کاربر حذف نماییم.

    4- طول پارامتر ورودی توسط کاربر را محدود نماییم.

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

    این مقاله به منظور آگاهی بیشتر طراحان و مدیران سایتها نوشته شده است. لطفا استفاده نادرست نفرمایید.



    موضوعات مشابه:

  2. #2


    عضو غیر فعال شناسه تصویری ahoa
    تاریخ عضویت
    Nov 2006
    نوشته
    25
    سپاسگزاری شده
    5
    سپاسگزاری کرده
    0
    خیلی ممنون دوست عزیز



کلمات کلیدی در جستجوها:

حملات sql injection

حمله SQL Injection

sql injection حمله جلوگیری از SQL injectionsql injectionحملاتدستور replace در sqlتاریخچه حمله sql injectionجلوگیری از حملات sql injectionروش های جلوگیری از sql injectionsql injectionحمله SQL Injuctionعملکرد sql injectionsql injectionوراههاي مقابله با انsql نحوه عملکردنحوه حمله sql injectionsql injection نحوه عملکردsql injection چیست؟http://forum.persiannetworks.com/f89/t14031.htmlحمله sql injection چیستحملات sql injection چیستمعرفی SQLsql injection پیشگیری ازحملات تزریق sglحمله  SQL Injectionحملات تزریق sql

برچسب برای این موضوع

مجوز های ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •