حمله XSS و نکات امنیتی مرتبط با آن، در PHP

یکی از حملاتی که هکرها می توانند به سایت ما داشته باشند، حمله XSS می باشد. عبارت XSS از Cross-site scripting گرفته شده است که برای عدم اشتباه گرفتن آن با CSS ، حرف اول آن به جای C ، برابر X در نظر گرفته شده است. در این نوع حمله، هکر کدهای مورد نظر خود را در میان کدهای صفحه سایت ما قرار می دهد و بنابراین این کدها، در مرورگر کاربران سایت اجرا خواهد شد.

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

برای فیلتر کردن ورودی کاربران از کدهای مخرب، باید از تابع htmlspecialchars در PHP استفاده کنیم. در واقع در میان کدهایی که برای پردازش ورودی های کاربر نوشته ایم، اولین مرحله، دریافت ورودی توسط این تابع می باشد.

یک حالت دیگر این است که هکر، لینکی را به کاربران نمایش می دهد تا کاربران بر روی آن کلیک کنند، لینک به صفحه ای از سایت ما اشاره می کند که در آن، از روش GET برای دریافت مقدار یک ورودی استفاده کرده ایم، بنابراین هکر، در آدرس لینک، کدهای مخرب مورد نظر خود را به جای مقدار آن متغیر قرار می دهد. مثلا هکر آدرس لینک را به صورت زیر تعیین می کند :

در آدرس فوق، هکر به جای عبارت HackerCodes ، یک سری کد مخرب خواهد نوشت که به عنوان مقدار متغیر input در نظر گرفته می شود. حال فرض کنید که کدهای صفحه مورد نظر که ما نوشته ایم، به صورت زیر باشد :

بنابراین چون مقدار متغیر input را (که البته همان کدهای مخرب هکر است) با دستور echo به خروجی صفحه می دهیم، بنابراین کدهای هکر، در صفحه و در مرورگر کاربر، اجرا خواهد شد.

برای جلوگیری از این مورد، باید با تابع htmlspecialchars در PHP ، ورودی تعیین شده به عنوان مقدار متغیر را از کدهای مخرب، فیلتر کنیم، یعنی این بار کدها را به صورت زیر می نویسیم :

دسته بندی امنیت، در PHP
نویسنده علیرضا گلمکانی
شماره کلید 2502
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)