it-swarm.asia

هل check_plain () كافٍ؟

هل check_plain () كافية لإعادة عرض النص الذي أدخله المستخدمون في المتصفح ، أم لا يزال يتعين عليّ التصفية باستخدام filter_xss () ؟

16
Citricguy

أتخيل أن السؤال يتعلق باستخدام check_plain(filter_xss($string)) أو filter_xss(check_plain($string)).

check_plain() و filter_xss() لهما غرضان مختلفان وعلى النقيض من ذلك:

  • يقوم check_plain() بترميز الأحرف الخاصة في سلسلة نص عادي يتم عرضها بعد ذلك بتنسيق HTML.
  • filter_xss() يقوم بتصفية سلسلة HTML لمنع ثغرات البرمجة النصية عبر المواقع (XSS). على وجه الخصوص الغرض منه هو:

    • إزالة الشخصيات والبنيات التي يمكن أن تخدع المتصفحات
    • التأكد من أن جميع كيانات HTML جيدة التنسيق
    • التأكد من أن جميع علامات وسمات HTML جيدة التنظيم
    • التأكد من عدم وجود علامات HTML تحتوي على عناوين URL ذات بروتوكول غير مسموح به (مثل جافا سكريبت :)

إذا كنت تستخدم check_plain() ، فمن المفترض استخدام السلسلة التي تم تمريرها إلى الدالة كنص عادي ؛ في هذه الحالة ، filter_xss() ليست ضرورية. إذا كنت تستخدم filter_xss() ، فمن المفترض أن تكون السلسلة التي تم تمريرها إلى الوظيفة هي HTML ، و check_plain() ليست ضرورية.

إذا كان السؤال يتعلق باستخدام check_plain() و filter_xss() على أجزاء مختلفة من نفس السلسلة ، وكما أشار غريغليس في تعليقه ، يمكنك استخدام (على سبيل المثال) check_plain() على محتوى سمات العلامة و filter_xss() على علامة HTML بالكامل.

26
kiamlaluno