نصائح حول مراقبة الكلمات

أثناء تحويل قائمة كبيرة من الكلمات المرصودة إلى تعبيرات نمطية، اكتشفت بعض الطرق لتجاوز الفلاتر. يبدو أن هذه الطرق تعمل مع الكلمات المرصودة “العادية” وكذلك مع التعبيرات النمطية.

المسافات المزدوجة: إذا كانت الكلمة المرصودة لديك هي forbidden word، فيمكن تجاوزها بوضع مسافات متعددة بين الكلمتين. من المثير للاهتمام أن المنشور النهائي سيحذف المسافة المزدوجة، لذا فهي غير مرئية تمامًا في النص النهائي.

  • لمنع ذلك باستخدام التعابير النمطية: استخدم forbidden\s*word
  • لمنع ذلك دون استخدام التعابير النمطية: لم أجد حلاً.

استخدم الرموز السفلية لتجاوز حدود الكلمات:
بدون تعابير نمطية: إذا أحطت بكلمة مرصودة برموز سفلية، فسيتم طباعتها بخط مائل وسيتم السماح بها. لذا، _forbidden_ سيتم قبولها إذا كان فلترك هو forbidden.
مع التعابير النمطية: عادةً ما يتم التحقق من حدود الكلمات فقط عند استخدام \b، وفي هذه الحالة ستفوز الرموز السفلية. لذا، _forbidden_ سيتم قبولها إذا كان فلترك هو \bforbidden\b.

  • لمنع ذلك باستخدام التعابير النمطية: استخدم [\b\_] بدلاً من \b
    تعديل: يبدو أن هذا لا يعمل بشكل جيد.
    قد يكون إزالة حدود الكلمات حلًا أيضًا، لكنك قد تخاطر بحظر كلمات مثل cumulative و title عن غير قصد :wink:
  • لمنع ذلك دون استخدام التعابير النمطية: لم أجد حلاً.
7 إعجابات

صحيح، هذا عادةً من النوع الذي لا نضيع وقتنا في خوضه، لأن هناك العديد من الحيل “المبتكرة” لتجاوز أي قائمة كلمات محظورة. إن يونيكود فضاء ضخم جدًا.

4 إعجابات

في الواقع، حاولنا القيام بذلك في عدد من مشاريع التعليم الضخمة منذ فترة.

قبل التخلي عن المشروع، تم إطلاقه مع المطابقة الضبابية، مما تسبب بشكل متوقع في جميع أنواع المشكلات للحالات الاستخدامية المشروعة.

3 إعجابات

تُعد الكلمات الخاضعة للمراقبة في الغالب خط الدفاع الأول ضد الكلمات غير اللائقة. لا يزال الأمر يتطلب من المجتمع تحديد محاولات التحايل والانتهاكات.

لا توجد تعبيرات نمطية (regex) يمكن ابتكارها قادرة على اكتشاف image.

9 إعجابات

فقط لإعلامك، [] مخصصة لـ “فئات الأحرف”. في تعبيرات بيرل النمطية، وربما تعبيرات روبي، \b تمثل “حدود الكلمة” خارج فئة الأحرف و"حذف الخلف" داخل فئة الأحرف. في لغة C، ‘\b’ تمثل دائمًا حذف الخلف (<control-H> بدقة). حذف الخلف ليس حرفًا مفيدًا في معظم الأوقات، بينما حدود الكلمة مفيدة، ومن هنا جاء إعادة التعريف.

لاستخدام تعبير نمطي للقبض على “_forbidden_” أو “forbidden”، سأستخدم على الأرجح:

\b_?forbidden_?\b

(أعرف أيضًا كيفية ترميز جميع أحرفي باستخدام &#xXX; لتجنب حيل يونيكود أو التعبير النمطي.)

3 إعجابات

لم أكن أدرك أبدًا أن هناك فرقًا اعتمادًا على السياق. شكرًا لك على الشرح! :slight_smile:

إعجابَين (2)