Flash / AS3是否处理RTLO和RTLE Unicode字符?

时间:2011-06-29 16:23:43

标签: flash actionscript-3 unicode

基于this report,我想知道Flash / AS3是否也处理从右到左的覆盖和从右到左的嵌入字符?

例如,在AS中实施的聊天程序是否容易受到使用RTLO / RTLE规避亵渎过滤器的人(例如写“\ u202E!nmad”以写“该死的!”)或冒充其他用户(例如放置“\” u202EmoT“作为他们的用户名显示为”Tom“)?

如果这是真的,可以采取什么对策来避免这些问题?

1 个答案:

答案 0 :(得分:1)

这与文本渲染器而不是ActionScript本身有关。如果您正在使用支持双向和复杂文本布局的新Flash 10文本渲染器,则是,用户输入可能会以意外方式呈现。新文本渲染器由TextLine等类使用。你可以通过粘贴类似的东西来看到这一点:

well‮!nmad!

http://blog.theflashblog.com/?p=442的文本布局示例演示中。

在旧的文本渲染器中,您不会得到它,但您也无法正确渲染复杂的脚本。

当您接受不受信任的用户输入以包含在更广泛的文本字符串中时,无论是否涉及Flash,您都应该过滤掉这些字符。选择过滤掉的好组是W3C描述为not suitable for use in markup的组。这包括比迪烟覆盖和一系列其他通常麻烦的控制代码。

我建议大多数Web应用程序例行过滤掉所有这些,以及除换行符之外的所有ASCII和C1控制代码(U + 0000-U + 0009,U + 000B-U + 001F,U + 007F- U + 009F)。

(亵渎过滤器并不是一个令人信服的理由拒绝双向竞价IMO - 它们很容易被几乎任何不值得打扰的东西所愚弄。)