فرض کنید شما سایتی را دارید و می خواهید با تطبیق و مقایسه کلمه عبور و نام کاربری که کاربر سایت وارد می کند با کلمه عبور و نام کاربری که در پایگاه داده موجود است اجازه ورود به کاربر بدهید.
و حالا فرض کنید یک هکر چنین چیزی را وارد کند:
در نتیجه عبارت SQL به چنین شکلی در خواهد آمد :
نهایتا اینکه هکر به سادگی توانست وارد سایت شود! به یک مثال دیگر درباره این نوع حملات توجه کنید:
شما سایتی را دارید که تاریخی را از کاربر می گیرد و بر پایه آن ، اخبار آن تاریخ را به کاربر نشان می دهد، فرض کنید از این آرایه $_GET استفاده می شود و کاربر تاریخی را وارد کرده است:
ظاهرا همه چیز درست است، ولی مثال زیر نگاه کنید:
نفوذگر در اینجا به جای تاریخ این عبارت را وارد کرده است:
و نتیجه کار حذف کامل جدول اخبار از پایگاه داده است.چطور می توان جلوی چنین حمله ای را گرفت؟
به کد زیر دقت کنید :
با استفاده از تابع mysql_escape_string() به راحتی می توانید جلوی چنین حملاتی را سد کنید. توجه کنید که همیشه قبل از آنکه از داده وارد شده توسط کاربر در پایگاه داده استفاده کنید، آن را با استفاده از این تابع فیلتر کنید.
SQL injection از طریق URLدستور SQL زیر را در نظر بگیرید :
در پستی که درباره آرایه های خطر ساز، به این موضوع اشاره شد که متغیر های آرایه $_GET از طریق URL قابل دستکاری است. فرض کنید نفوذگر آدرس سایت را به شکل زیر در نوار آدرس وارد کند:
لطفا به این قسمت آدرس دقت کنید:
علامت ۲۰% که در URL وارد می شود، تبدیل به فاصله بین ID=0 و OR می شود. که نهایتا تبدیل به دستور SQL زیر می شود:
با اجرای دستور بالا نفوذگر موفق می شود به تمامی اطلاعات جدول usertable دسترسی داشته باشد.
سرقت ۳۲ میلیون کلمه عبور کاربران سایت RockYou در سال ۲۰۰۹ ، و یا حمله ای دیگر که در همان سال باعث شد ۳۰۰۰۰۰ صفحه وب به تروجان Buzus.AH آلوده شوند و در جریان آن حمله تکنیک SQL injection نقش مهمی را داشت ، نشان می دهد که سهل انگاری در امنیت پایگاه داده تا چه حد می تواند پیامدهایی خطرناک داشته باشد.
بدون کلمه عبور ، Admin شوید!به دستور SQL زیر دقت کنید :
فرض کنید نفوذگر این ورودی را وارد کند:
به علامت نقطه چین (–) در آخر عبارت دقت کنید، این نقطه چین باعث می شود که هر آنچه که بعد از نقطه چین باشد، به صورت توضیحات در نظر گرفته شود. این ترفند بسیار خوبی برای یک نفوذگر است، چون در صورتی که کوتیشنی باز مانده باشد و بعد از نقطه چین قرار بگیرد، نادیده گرفته می شود و هیچ پیغام خطایی نشان داده نخواهد شد و نفوذگر با راحتی دستورات دلخواه خود را اجرا می کند. در صورتی که این ورودی در $ID قرار بگیرد، نتیجه اجرای SQL دستیابی به حق دسترسی Admin خواهد بود. به کوتیشن بعد از نقطه چین دقت کنید.
هک کردن شرط WHERE در عبارات SQL
فرض کنید عبارت زیر تمام شماره کارتهای اعتباری مربوط به یک کاربر بر می گرداند:
می بینید که در اینجا از آرایه $_GET استفاده شده است با لینک زیر دقت کنید:
حالا فرض کنید هکر یک لینکی مانند این بسازد:
که معادل زیر است:
اکنون هکر هم اطلاعات رستم دسترسی دارد و هم به اطلاعات سهراب!
مقایسه بیسن addslashes() و تابع mysql_escape_string()
در مورد تابع addslashes، کاراکترهایی که این تابع escape می کند، با کارکتر هایی که لازم در مورد پایگاه داده escape شوند ممکن است تفاوت داشته باشد، بطور مثال این تابع کاراکتر newline را escape نمی کند، در حالی که escape این کاراکتر برای فیلتر ورودی پایگاه داده لازم و ضروری است.
در کل توصیه می شود همیشه از تابع mysql_escape_string استفاده کنید.
در صورت استفاده از mysql_escape_string()، آیا باز هم حملات SQL injection امکان پذیر است؟
هنگامی که با متغیر هایی سر و کار دارید که از نوع Int هستند، باید حتما در دوطرف این نوع متغیر ها از علامت کوتیشن (‘) استفاده کنید. برای درک بهتر این مساله به مثال زیر دقت کنید :
فرض کنید نفوذگر در نوار آدرس مرورگرش این URL را وارد کند:
در اینجا با وجودی که شما از تابع mysql_escape_string() استفاده کرده اید، ولی باز هم نفوذگر موفق می شود که جدول users را حذف کند.جدول زیر را در نظر بگیرید:
فرض کنید دستورات زیر را
ظاهرا که نباید مشکلی به وجود بیاید چون از تابع mysql_real_escape_string() استفاده شده است. ولی اجرای برخی ورودیها، چیز دیگری را نشان می دهد. بطور مثال با ورودی:
تمام نام ها کاربری نشان داده می شود. حال به کد زیر دقت کنید:
اگر این کد را با کد قبلی مقایسه کنید، متوجه خواهید شد تنها تفاوت، استفاده از علامت کوتیشن (‘) می باشد. با به کارگیری این ترفند ساده، از این حمله با راحتی جلوگیری می شود. ترفند دیگر ،که از ترفند قبلی هم کاراتر است، استفاده از تابع intval است:
با مثال دیگر توجه کنید :
فرض کنید نفوذگر، این دستور SQL را در ورودی وارد کند:
برای اینکه مثال کاملا واضح باشد، ساختار دستور IF را در SQL مرور می کنیم:
اگر expr1 صحیح باشد،expr2 برگردانده می شود، در غیر این صورت، expr3 برگردانده می شود. به مثال باز می گردیم در این مثال با یک ترفند ماهرانه نفوذگران در حملات SQL injection آشنا می شوید:
یک نفوذگر می تواند به جای استفاده از علامت کوتیشن، از فرمت هگزادسیمال و یا ترکیبی از توابع CHAR() و CONCAT() استفاده کند. در مثال بالا از این ترفند بسیار جالب، یعنی به کارگیری فرمت هگزادسیمال استفاده شده است. هکر در اینجا امتحان می کند که آیا نام کاربری ‘Winnie’ با کلمه عبور ‘Pooh’ در پایگاه داده وجود دارد؟ اگر چنین کاربری وجود داشته باشد، نتایج اجرای دستور SQL بر اساس userid مرتب خواهد شد و به کاربر نمایش داده خواهد شد. در غیر این صورت نتایج را بر اساس username مرتب می شود و به کاربر نمایش داده می شود.
در مثال بالا، از آرایه $_GET استفاده شده بود. در قسمت دوم با مثالی اشاره شد که در آن نفوذگر حمله SQL injection بوسیله کدهایی در نوار آدرس وارد می کرد انجام می داد. به کدی در این مثال مورد برای حمله استفاده قرار گرفته دقت کنید:
این کد شمال کاراکترهای مثل : = و یا ) می باشد.سوال این است چطور یک نفوذگر می تواند این کاراکتر ها در URL وارد کند؟ برای این کار راه حل آسانی وجود دارد: استفاده از تابع urlencode() . تابع urlencode() رشته ای را از ورودی می گیرد و آن را به گونه ای تغییر می دهد که بتوان از آن به عنوان قسمتی از URL استفاده کرد. برای درک بهتر این مثال، فرض کنید شما در سایت زیر هستید:
در این صفحه وب لیستی از نام کاربران به همراه اطلاعات دیگری از آنها که شامل تاریخ عضویت و یا پستهای آنها است وجود دارد.درصورتی که شما بر روی هر کدام از ستونها کلیک کنید، لیست بر اساس آن ستون مرتب می شود.اگر به نوار آدرس مرورگرتان دقت کنید، متوجه خواهید شد با کلیک بر روی هر کدام از ستونها، نوار آدرس تغییر می کند. بطور مثال اگر بر روی username کلیک کنید، عبارت sort=username در نوار آدرس خواهید دید. و یا اگر بر روی posts کلیک کنید، عبارت sort=post را خواهید دید. حالا فرض کنید که این فروم یک نفوذ پذیری مانند مثال بالا داشته باشد. یک نفوذگر، عبارت زیر را وارد کنید:
فرض کنید که :
در آن صورت، نفوذگر تلاش خواهد کرد که کلمه عبور سایت را حدس بزند، مثل:
در این صورت، اگر لیست اعضای کاربر سایت بر اساس نام کاربری مرتب شده باشد، حدس نفوذگر درست خواهد بود. در غیر این صورت، لیست نام کاربران سایت بر اساس تاریخ عضویت (join date) مرتب خواهد شد. خواننده باید توجه کند که اطمینان پیدا کردن از نوع داده صحیح ، با escape کردن ورودی متفاوت است، و برای امنیت بیشتر باید از هردو روش در کنار هم استفاده کرد.
وقتی SQL injection کولاک می کند!
در دسامبر سال ۲۰۰۹ در جریان یک حمله بزرگ و حرفه ای ،۳۰۰۰۰۰ صفحه وب با استفاده از حمله SQL injection تخریب شدند.امروزه، استفاده از سیستم های مدیریت محتوایی چون جوملا ، مامبو و دراپل … فراگیر شده است. اگر یک نفوذگر بتواند، در یک سیستم مدیریت محتوا، یک شکاف امنیت پیدا کند، می تواند به همه سایتهایی که از این سیستم مدیرین محتوا استفاده می کنند، حمله کند. در جریان حمله دسامبر ۲۰۰۹، چنین مساله ای به طور مشابه اتفاق افتاد.
فرض کنید یک سیستم مدیریت محتوا، نسبت به حمله SQL injection آسیب پذیر است و یک نفوذگر، می تواند پایگاه داده آن را دستکاری کند.نفوذگر پایگاه داده این سیستم را چنان دستکاری می کند که یک iframe در صفحه وب آن سایت وارد شود. یک iframe در واقع یک صفحه دیگر را در درون یک صفحه وب قرار می دهد. این صفحه وبی که درون صفحه وب سیستم مدیریت محتوا گذاشته می شود، حاوی یک اسکریپت مخرب است که در واقع باعث می شود یک تروجان روی سیستم کاربر نگون بخت نصب شود. این تروجان اطلاعات بانکی، کلمات عبور و سایر اطلاعات شخصی کاربر را سرقت می کند.
SQL injection اگر جدی گرفته نشود و تمهیدات مناسب برای مقابله با آن در نظر گرفته نشود می تواند بسیار فاجعه بار باشد. برای مثال، آقای آلبرت گونزالز، با روش SQL injection توانسته شماره های ۱۳۰ میلیون کارت اعتباری را سرقت کند!
منبع1
منبع2
منبع3
کد:
SELECT * FROM users WHERE name='$username' AND pass='$password';
و حالا فرض کنید یک هکر چنین چیزی را وارد کند:
کد:
'OR '1'='1'
در نتیجه عبارت SQL به چنین شکلی در خواهد آمد :
کد:
SELECT * FROM users WHERE name='know_user' AND pass=''OR '1'='1';
نهایتا اینکه هکر به سادگی توانست وارد سایت شود! به یک مثال دیگر درباره این نوع حملات توجه کنید:
شما سایتی را دارید که تاریخی را از کاربر می گیرد و بر پایه آن ، اخبار آن تاریخ را به کاربر نشان می دهد، فرض کنید از این آرایه $_GET استفاده می شود و کاربر تاریخی را وارد کرده است:
کد:
//$_GET['date'] is 09262006;
'SELECT * FROM news WHERE date='.$_GET['date'];
// QUER is SELECT * FROM news WHERE date=09262006
ظاهرا همه چیز درست است، ولی مثال زیر نگاه کنید:
کد:
//$_GET['date'] is 09262006;DROM TABLE news;
'SELECT * FROM news WHERE date='.$_GET['date'];
// QUER is SELECT * FROM news WHERE date=09262006;DROP TABLE news;
نفوذگر در اینجا به جای تاریخ این عبارت را وارد کرده است:
کد:
۰۹۲۶۲۰۰۶;DROM TABLE news;
و نتیجه کار حذف کامل جدول اخبار از پایگاه داده است.چطور می توان جلوی چنین حمله ای را گرفت؟
به کد زیر دقت کنید :
کد:
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string($_POST['password']);
با استفاده از تابع mysql_escape_string() به راحتی می توانید جلوی چنین حملاتی را سد کنید. توجه کنید که همیشه قبل از آنکه از داده وارد شده توسط کاربر در پایگاه داده استفاده کنید، آن را با استفاده از این تابع فیلتر کنید.
SQL injection از طریق URLدستور SQL زیر را در نظر بگیرید :
PHP:
mysql_query("SELECT * FROM usertable WHERE id='$_GET[ID]');
در پستی که درباره آرایه های خطر ساز، به این موضوع اشاره شد که متغیر های آرایه $_GET از طریق URL قابل دستکاری است. فرض کنید نفوذگر آدرس سایت را به شکل زیر در نوار آدرس وارد کند:
کد:
http://www.example.com/customers.php?ID=0%20OR1=1
لطفا به این قسمت آدرس دقت کنید:
کد:
ID=0%20OR%201=1
علامت ۲۰% که در URL وارد می شود، تبدیل به فاصله بین ID=0 و OR می شود. که نهایتا تبدیل به دستور SQL زیر می شود:
کد:
SELECT * FROM usertable WHERE ID =0 OR 1-1
با اجرای دستور بالا نفوذگر موفق می شود به تمامی اطلاعات جدول usertable دسترسی داشته باشد.
سرقت ۳۲ میلیون کلمه عبور کاربران سایت RockYou در سال ۲۰۰۹ ، و یا حمله ای دیگر که در همان سال باعث شد ۳۰۰۰۰۰ صفحه وب به تروجان Buzus.AH آلوده شوند و در جریان آن حمله تکنیک SQL injection نقش مهمی را داشت ، نشان می دهد که سهل انگاری در امنیت پایگاه داده تا چه حد می تواند پیامدهایی خطرناک داشته باشد.
بدون کلمه عبور ، Admin شوید!به دستور SQL زیر دقت کنید :
PHP:
$Query = "UPDATE usertable SET pwd='$password' WHERE ID='$ID'";
فرض کنید نفوذگر این ورودی را وارد کند:
کد:
' or ID like'%admin%';--
به علامت نقطه چین (–) در آخر عبارت دقت کنید، این نقطه چین باعث می شود که هر آنچه که بعد از نقطه چین باشد، به صورت توضیحات در نظر گرفته شود. این ترفند بسیار خوبی برای یک نفوذگر است، چون در صورتی که کوتیشنی باز مانده باشد و بعد از نقطه چین قرار بگیرد، نادیده گرفته می شود و هیچ پیغام خطایی نشان داده نخواهد شد و نفوذگر با راحتی دستورات دلخواه خود را اجرا می کند. در صورتی که این ورودی در $ID قرار بگیرد، نتیجه اجرای SQL دستیابی به حق دسترسی Admin خواهد بود. به کوتیشن بعد از نقطه چین دقت کنید.
PHP:
$Query = "UPDATE usertable SET pwd='...' WHERE ID=' or ID like'%admin%';--";
هک کردن شرط WHERE در عبارات SQL
فرض کنید عبارت زیر تمام شماره کارتهای اعتباری مربوط به یک کاربر بر می گرداند:
PHP:
$sql = "SELECT card_num,card_name,card_expiry
FROM credit_cards
WHERE username = '{$_GET['username']}'";
می بینید که در اینجا از آرایه $_GET استفاده شده است با لینک زیر دقت کنید:
کد:
<a href="/account.php?username=rostam">Credit Card Information </a>
حالا فرض کنید هکر یک لینکی مانند این بسازد:
کد:
/account.php?username=rostam %27+OR+username+%3D+%27sohrab
که معادل زیر است:
PHP:
$sql = "SELECT card_num,card_name,card_expiry
FROM credit_cards
WHERE username = 'rostam' OR username = 'sohrab'";
اکنون هکر هم اطلاعات رستم دسترسی دارد و هم به اطلاعات سهراب!
مقایسه بیسن addslashes() و تابع mysql_escape_string()
در مورد تابع addslashes، کاراکترهایی که این تابع escape می کند، با کارکتر هایی که لازم در مورد پایگاه داده escape شوند ممکن است تفاوت داشته باشد، بطور مثال این تابع کاراکتر newline را escape نمی کند، در حالی که escape این کاراکتر برای فیلتر ورودی پایگاه داده لازم و ضروری است.
در کل توصیه می شود همیشه از تابع mysql_escape_string استفاده کنید.
در صورت استفاده از mysql_escape_string()، آیا باز هم حملات SQL injection امکان پذیر است؟
هنگامی که با متغیر هایی سر و کار دارید که از نوع Int هستند، باید حتما در دوطرف این نوع متغیر ها از علامت کوتیشن (‘) استفاده کنید. برای درک بهتر این مساله به مثال زیر دقت کنید :
PHP:
$id = mysql_escape_string($_GET['id']);
mysql_query("SELECT * FROM users WHERE id={$id}");
فرض کنید نفوذگر در نوار آدرس مرورگرش این URL را وارد کند:
کد:
http://www.example.com/db.php?id=0;DELETE20%FROM20%users
در اینجا با وجودی که شما از تابع mysql_escape_string() استفاده کرده اید، ولی باز هم نفوذگر موفق می شود که جدول users را حذف کند.جدول زیر را در نظر بگیرید:
فرض کنید دستورات زیر را
PHP:
$userid = isset($_GET['id']) ? $_GET['id'] :0;
$userid = mysql_real_escape_string($userid);
mysql_query("SELECT userid,username FROM sql_injection_test WHERE userid=$userid");
ظاهرا که نباید مشکلی به وجود بیاید چون از تابع mysql_real_escape_string() استفاده شده است. ولی اجرای برخی ورودیها، چیز دیگری را نشان می دهد. بطور مثال با ورودی:
کد:
Id=0 or 1
تمام نام ها کاربری نشان داده می شود. حال به کد زیر دقت کنید:
PHP:
$userid = isset($_GET['id']) ? $_GET['id'] :0;
$userid = mysql_real_escape_string($userid);
mysql_query("SELECT userid,username FROM sql_injection_test WHERE 'userid'='$userid'");
اگر این کد را با کد قبلی مقایسه کنید، متوجه خواهید شد تنها تفاوت، استفاده از علامت کوتیشن (‘) می باشد. با به کارگیری این ترفند ساده، از این حمله با راحتی جلوگیری می شود. ترفند دیگر ،که از ترفند قبلی هم کاراتر است، استفاده از تابع intval است:
PHP:
$userid = isset($_GET['id']) ? $_GET['id'] :0;
$userid = intval($userid);
$userid = mysql_real_escape_string($userid);
mysql_query("SELECT userid,username FROM sql_injection_test WHERE 'userid'='$userid'");
با مثال دیگر توجه کنید :
PHP:
$order = isset($_GET['o']) ? $_GET['o'] :'userid';
$order = mysql_real_escape_string($order);
mysql_query("SELECT userid,username FROM sql_injection_test ORDER BY $order");
فرض کنید نفوذگر، این دستور SQL را در ورودی وارد کند:
کد:
O=IF ((SELECT userid FROM sql_injection_test)
WHERE username=0x57696e6e6965 AND password=0x506f6f68),
Userid,username)
برای اینکه مثال کاملا واضح باشد، ساختار دستور IF را در SQL مرور می کنیم:
کد:
IF (expr1,expr2,expr3)
اگر expr1 صحیح باشد،expr2 برگردانده می شود، در غیر این صورت، expr3 برگردانده می شود. به مثال باز می گردیم در این مثال با یک ترفند ماهرانه نفوذگران در حملات SQL injection آشنا می شوید:
یک نفوذگر می تواند به جای استفاده از علامت کوتیشن، از فرمت هگزادسیمال و یا ترکیبی از توابع CHAR() و CONCAT() استفاده کند. در مثال بالا از این ترفند بسیار جالب، یعنی به کارگیری فرمت هگزادسیمال استفاده شده است. هکر در اینجا امتحان می کند که آیا نام کاربری ‘Winnie’ با کلمه عبور ‘Pooh’ در پایگاه داده وجود دارد؟ اگر چنین کاربری وجود داشته باشد، نتایج اجرای دستور SQL بر اساس userid مرتب خواهد شد و به کاربر نمایش داده خواهد شد. در غیر این صورت نتایج را بر اساس username مرتب می شود و به کاربر نمایش داده می شود.
در مثال بالا، از آرایه $_GET استفاده شده بود. در قسمت دوم با مثالی اشاره شد که در آن نفوذگر حمله SQL injection بوسیله کدهایی در نوار آدرس وارد می کرد انجام می داد. به کدی در این مثال مورد برای حمله استفاده قرار گرفته دقت کنید:
کد:
O=IF ((SELECT userid FROM sql_injection_test)
WHERE username=0x57696e6e6965 AND password=0x506f6f68),
Userid,username)
این کد شمال کاراکترهای مثل : = و یا ) می باشد.سوال این است چطور یک نفوذگر می تواند این کاراکتر ها در URL وارد کند؟ برای این کار راه حل آسانی وجود دارد: استفاده از تابع urlencode() . تابع urlencode() رشته ای را از ورودی می گیرد و آن را به گونه ای تغییر می دهد که بتوان از آن به عنوان قسمتی از URL استفاده کرد. برای درک بهتر این مثال، فرض کنید شما در سایت زیر هستید:
کد:
http://www.site.com/forums/memberlist.php
در این صفحه وب لیستی از نام کاربران به همراه اطلاعات دیگری از آنها که شامل تاریخ عضویت و یا پستهای آنها است وجود دارد.درصورتی که شما بر روی هر کدام از ستونها کلیک کنید، لیست بر اساس آن ستون مرتب می شود.اگر به نوار آدرس مرورگرتان دقت کنید، متوجه خواهید شد با کلیک بر روی هر کدام از ستونها، نوار آدرس تغییر می کند. بطور مثال اگر بر روی username کلیک کنید، عبارت sort=username در نوار آدرس خواهید دید. و یا اگر بر روی posts کلیک کنید، عبارت sort=post را خواهید دید. حالا فرض کنید که این فروم یک نفوذ پذیری مانند مثال بالا داشته باشد. یک نفوذگر، عبارت زیر را وارد کنید:
کد:
Sort=IF(username=0x83429462 AND password=0x123846136,username,joindate)
فرض کنید که :
کد:
۰x83429462==admin
در آن صورت، نفوذگر تلاش خواهد کرد که کلمه عبور سایت را حدس بزند، مثل:
کد:
Password=0x123846136
در این صورت، اگر لیست اعضای کاربر سایت بر اساس نام کاربری مرتب شده باشد، حدس نفوذگر درست خواهد بود. در غیر این صورت، لیست نام کاربران سایت بر اساس تاریخ عضویت (join date) مرتب خواهد شد. خواننده باید توجه کند که اطمینان پیدا کردن از نوع داده صحیح ، با escape کردن ورودی متفاوت است، و برای امنیت بیشتر باید از هردو روش در کنار هم استفاده کرد.
وقتی SQL injection کولاک می کند!
در دسامبر سال ۲۰۰۹ در جریان یک حمله بزرگ و حرفه ای ،۳۰۰۰۰۰ صفحه وب با استفاده از حمله SQL injection تخریب شدند.امروزه، استفاده از سیستم های مدیریت محتوایی چون جوملا ، مامبو و دراپل … فراگیر شده است. اگر یک نفوذگر بتواند، در یک سیستم مدیریت محتوا، یک شکاف امنیت پیدا کند، می تواند به همه سایتهایی که از این سیستم مدیرین محتوا استفاده می کنند، حمله کند. در جریان حمله دسامبر ۲۰۰۹، چنین مساله ای به طور مشابه اتفاق افتاد.
فرض کنید یک سیستم مدیریت محتوا، نسبت به حمله SQL injection آسیب پذیر است و یک نفوذگر، می تواند پایگاه داده آن را دستکاری کند.نفوذگر پایگاه داده این سیستم را چنان دستکاری می کند که یک iframe در صفحه وب آن سایت وارد شود. یک iframe در واقع یک صفحه دیگر را در درون یک صفحه وب قرار می دهد. این صفحه وبی که درون صفحه وب سیستم مدیریت محتوا گذاشته می شود، حاوی یک اسکریپت مخرب است که در واقع باعث می شود یک تروجان روی سیستم کاربر نگون بخت نصب شود. این تروجان اطلاعات بانکی، کلمات عبور و سایر اطلاعات شخصی کاربر را سرقت می کند.
SQL injection اگر جدی گرفته نشود و تمهیدات مناسب برای مقابله با آن در نظر گرفته نشود می تواند بسیار فاجعه بار باشد. برای مثال، آقای آلبرت گونزالز، با روش SQL injection توانسته شماره های ۱۳۰ میلیون کارت اعتباری را سرقت کند!
منبع1
منبع2
منبع3