XSS طريقة إصلاح ثغرة
السلام عليكم ,
شرح طريقة إصلاح ثغرة XSS باستخدام دالة ()htmlspecialchars :
تقوم دالة ()htmlspecialchars بفلترة المدخلات التي يقوم المستخدم بادخالها.
تقوم الدالة بعمل Encode او تشفير للحروف الخاصة مثل : [ "><' ] لهذا السبب ستبطل خاصيتهم ولن يتم تنفيذ اكواد جافاسكربت في المتصفح
اولا : الكود المصاب في لغة PHP لاستقبال البيانات من المستخدم
<?php echo "Welcome " . $_GET["name"]; ?>
لاحظ بان دالة GET['name']_$ تقوم باستقبال البيانات وعرضها باستخدام echo بدون تحقق وفلترة
لذالك سيقوم Attacker باستغلال الثغرة عن طريق حقن كود خبيث :
https://target.com?name=Ahmed<script>alert(document.domain)</script>

Source code :

ثانيا : البرمجة الآمنة , سيقوم الكود بالتحقق من كل المدخلات وفلترتها وعمل Encode للاحرف الخاصة :
<?php echo htmlspecialchars($_GET['name']); ?>
لاحظ بان دالة GET['name']_$ تقوم باستقبال البيانات وقبل ان يتم معالجة البيانات وارجاعها الى المستخدم سيتم تمرير البيانات الى دالة ()htmlspecialchars لفلترتها وعمل Encode للمدخلات الخبيثة , سيتم طباعة المدخلات بدون ان يتم تنفيذها
https://target.com?name=Ahmed<script>alert(document.domain)</script>

Source code :

Video :