Viste trucos de palabras

Al convertir una larga lista de palabras vigiladas a expresiones regulares, descubrí algunas formas de eludir los filtros. Estos métodos parecen funcionar tanto para palabras vigiladas “normales” como para expresiones regulares.

Doble espacio: si tu palabra vigilada es palabra prohibida, esto puede eludirse colocando múltiples espacios entre las dos palabras. Un dato curioso es que la publicación procesada eliminará el doble espacio, por lo que será totalmente invisible en el texto final.

  • para evitar esto usando expresiones regulares: usa palabra\s*prohibida
  • para evitar esto sin expresiones regulares: no encontré una solución.

Usa guiones bajos para sortear los límites de palabras:
sin expresiones regulares: si rodeas una palabra vigilada con guiones bajos, se imprimirá en cursiva y será permitida. Así, _prohibida_ será aceptada si tu filtro es prohibida.
con expresiones regulares: normalmente los límites de palabras solo se verifican si usas \b, y en ese caso el guion bajo los vencerá. Así, _prohibida_ será aceptada si tu filtro es \bprohibida\b.

  • para evitar esto usando expresiones regulares: usa [\b\_] en lugar de \b
    edit: esto no parece funcionar bien.
    Eliminar los límites de palabras también podría funcionar, pero corres el riesgo de prohibir accidentalmente palabras como acumulativo y título :wink:
  • para evitar esto sin expresiones regulares: no encontré una solución.
7 Me gusta

Bien, generalmente este es el tipo de cosa por la que no gastamos tiempo luchando, porque hay muchos trucos “astutos” para eludir cualquier tipo de lista de bloqueo de palabras. Unicode es un espacio muy, muy grande.

4 Me gusta

De hecho, intentamos hacer esto en una serie de grandes proyectos educativos hace un tiempo.

Antes de que se abandonara, implementaron la coincidencia difusa, lo que, como era de esperar, causó todo tipo de problemas para casos de uso legítimos.

3 Me gusta

Las palabras vigiladas son principalmente una “primera línea de defensa” contra las palabras ofensivas. Aun así, necesitas que la comunidad señale las formas de eludirlas y las infracciones.

Ninguna expresión regular que puedas diseñar será capaz de detectar una image.

9 Me gusta

Solo para informarte, [] es para “clases de caracteres”. En las expresiones regulares de Perl, y posiblemente en las de Ruby, \b es un “límite de palabra” fuera de una clase de caracteres y “retroceso” dentro de una clase de caracteres. En C, ‘\b’ es siempre retroceso (<control-H> para ser precisos). El retroceso no es un carácter útil la mayor parte del tiempo, mientras que los límites de palabra sí, de ahí la redefinición.

Para usar una expresión regular que detecte “_forbidden_” o “forbidden”, probablemente usaría:

\b_?forbidden_?\b

(También sé cómo codificar todas mis letras con &#xXX; para evitar trucos de Unicode o la expresión regular.)

3 Me gusta

¡Nunca había notado que había una diferencia dependiendo del contexto! ¡Gracias por la explicación! :slight_smile:

2 Me gusta