Cambios de la evaluación de la regla de Radar personalizada

Stripe tiene previsto mejorar las reglas de Radar a finales de mayo de 2024 para que sea más fácil comprender y gestionar el comportamiento cuando falten valores de atributo.

Actualmente, si escribes una regla como Bloquear si :email_domain: != 'notfraud.com' y falta :email_domain:, esta regla no coincidirá. Esto se debe a que Stripe interpreta != 'notfraud.com' como que el atributo tiene un valor explícito distinto de 'notfraud.com', aspecto que no cumpliría un atributo que falta. En cambio, si escribes una regla parecida, como Bloquear si NOT(:email_domain: = 'notfraud.com'), y falta :email_domain:, esta regla sí que coincidirá. Esto se debe a que la expresión anidada :email_domain: = 'notfraud.com' se evaluaría como false, que, al ser negada por la operación NOT, se evaluaría como true.

Sin embargo, con el nuevo intérprete, ambas reglas harían que la regla no coincidiera. El motivo es que cualquier comparación (por ejemplo, =, !=, >, <, IN) de un atributo que falta con otro atributo o valor estático (que falta o está presente) respeta que falta ese dato. Del mismo modo, cualquier operación lógica (como AND, OR, NOT) a la que le falten valores da como resultado la ausencia del atributo a menos que se haya definido de forma explícita. Cualquier regla que provoque que se respete un valor faltante durante toda la evaluación no coincidirá.

Para identificar las reglas que se verán afectadas por este cambio, revisa los predicados que usen una negación NOT con un atributo anidado que podría faltar. Si quieres mantener el mismo comportamiento de coincidencia de Bloquear si NOT(:email_domain: = 'notfraud.com'), tendrás que cambiar el predicado de tu regla de forma explícita para gestionar los valores que faltan: Bloquear si is_missing(:email_domain:)OR NOT(:email_domain: = 'notfraud.com'). Si no lo haces, tu regla adoptará de forma automática el comportamiento actualizado una vez que Stripe implemente el cambio en mayo de 2024.

Did this answer your question?