برنامه نویسی

درک و جلوگیری از حملات XSS: راهنمای توسعه دهنده جلو

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

در پایان ، شما نه تنها XSS را در خارج از کشور درک خواهید کرد بلکه استراتژی های عملی را نیز برای ایمن سازی برنامه های خود – بدون اضافه بار معمول ژارگون ، به دست می آورید. با من بچسبید ، و هرگز مجبور نخواهید شد امنیت برنامه خود را دوباره حدس بزنید!

1. XSS چیست؟

XSS (برنامه نویسی متقابل) یک آسیب پذیری امنیتی است که به مهاجمان اجازه می دهد تا کد JavaScript مخرب را به یک برنامه وب تزریق کنند. این کد در چارچوب مرورگر قربانی اجرا می شود و مهاجمان را قادر می سازد تا داده های حساس ، جلسات ربوده شده یا وب سایت های Deface را سرقت کنند.

XSS چگونه کار می کند؟
XSS هنگامی اتفاق می افتد که ورودی کاربر به درستی ضد عفونی نشود و مستقیماً به DOM منتقل شود. به عنوان مثال ، یک برنامه وب ساده را در نظر بگیرید که با نام کاربران را سلام می کند:

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

شرح تصویر

2. انواع XSS

سه نوع اصلی حملات XSS وجود دارد:

1. xss منعکس شده

  • توضیحات: اسکریپت مخرب از یک سرور وب ، مانند نتیجه جستجو یا پیام خطا منعکس شده است.

  • مثال: یک کاربر یک اسکریپت مخرب را به یک نوار جستجو وارد می کند و سرور اسکریپت را به عنوان بخشی از پاسخ برمی گرداند.

  • تأثیر: اسکریپت در مرورگر قربانی اجرا می شود ، که اغلب منجر به ربودن جلسه یا سرقت داده ها می شود.

2. XSS ذخیره شده

  • توضیحات: اسکریپت مخرب به طور دائم در سرور (به عنوان مثال در یک پایگاه داده) ذخیره می شود و به کاربرانی که به صفحه آسیب دیده دسترسی پیدا می کنند ، ارائه می شود.

  • مثال: یک کاربر نظر خود را که حاوی یک اسکریپت مخرب در یک وبلاگ است ، ارسال می کند. هر بازدید کننده ای که نظر را مشاهده می کند ، فیلمنامه را اجرا می کند.

  • تأثیر: بر همه کاربرانی که محتوای به خطر افتاده را مشاهده می کنند ، تأثیر می گذارد و آن را خطرناک تر از XSS منعکس کننده می کند.

3. XSS مبتنی بر DOM

  • توضیحات: آسیب پذیری کاملاً در کد سمت مشتری وجود دارد. ورودی کاربر بدون ضد عفونی مناسب به طور مستقیم در DOM دستکاری می شود.

  • مثال: از یک پارامتر URL برای به روزرسانی پویا محتوای صفحه استفاده می شود.

const userInput = new URLSearchParams(window.location.search).get('input');
document.getElementById('output').innerHTML = userInput;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر URL حاوی باشد input=، فیلمنامه اجرا می شود.

  • تأثیر: مشابه XSS منعکس شده اما شامل پردازش سمت سرور نیست.

3. جلوگیری از حملات XSS

بهترین روشهای کلی

  1. ورودی کاربر: همیشه ورودی کاربر را در هر دو طرف مشتری و سرور تأیید و ضد عفونی کنید.

  2. خروجی فرار: قبل از ارائه آن در DOM ، از شخصیت های خاص در ورودی کاربر فرار کنید.

  3. از کتابخانه های ایمن استفاده کنید: کتابخانه های اهرمی مانند Dompurify برای ضد عفونی HTML.

جلوگیری از XSS در جاوا اسکریپت وانیلی

  • فرار از شخصیت های HTML: شخصیت های خاصی مانند <،> ، & ، “و” را با موجودات HTML خود جایگزین کنید.
function escapeHTML(str) {
  return str.replace(/&/g, '&')
            .replace(//g, '>')
            .replace(/"/g, '"')
            .replace(/'/g, ''');
}

const userInput = ``;
document.getElementById('output').innerHTML = escapeHTML(userInput);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • از InnerHTML خودداری کنید: برای جلوگیری از اجرای اسکریپت از Innertext یا TextContent استفاده کنید.
document.getElementById('output').textContent = userInput;

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جلوگیری از XSS در چارچوب های واکنش و مدرن

  • با خیال راحت از JSX استفاده کنید: واکنش به طور خودکار از محتوا در JSX فرار می کند و از بیشتر حملات XSS جلوگیری می کند.
const userInput = ``;
return 

{userInput}

; // Safe, React escapes the content
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • HTML داخلی را به طور خطرناکی تنظیم کنید: اگر باید از DangrativeSetInnerHtml استفاده کنید ، ابتدا ورودی را ضد عفونی کنید.
import DOMPurify from 'dompurify';

const userInput = ``;
const cleanInput = DOMPurify.sanitize(userInput);

return ;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • از دستکاری مستقیم دام خودداری کنید: به جای دستکاری مستقیم DOM ، از حالت React و غرفه ها استفاده کنید.

پایان

XSS یک آسیب پذیری قدرتمند و خطرناک است ، اما می توان با اقدامات احتیاطی مناسب کاهش یافت. به عنوان یک توسعه دهنده جلوی ، نقش شما در اطمینان از ورودی و ارائه ورودی کاربر با خیال راحت بسیار مهم است. با پیروی از بهترین شیوه ها مانند ضد عفونی کننده ورودی ، فرار از خروجی و استفاده از کتابخانه های ایمن ، می توانید برنامه های قوی و ایمن بسازید.

به یاد داشته باشید: XSS فقط تزریق جاوا اسکریپت است، و این وظیفه شماست که مانع از تهدید آن شوید. هوشیار باشید و برنامه نویسی مبارک! 🚀

خواندن بیشتر:
https://www.youtube.com/watch؟v=eoadgugs6qa

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا