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