我遇到了一个有趣的问题。
在我们的网页中,用户可以编写自己的描述。我们转义所有文本以便于编写(<3
正确显示并且不是标记的开头)。这也避免了尝试注入其javascript代码或隐藏某些内容或使用html执行任何操作时出现的任何问题。
副作用是当用户写
时Hi
My name is
显示为
Hi My name is
最初我们(真的我)写了var desc = (SafeHtml)obj.desc.HtmlEscape.replace("\n", "\n<br>")
然而这并没有取代任何东西,因为真正发生的是\ n被替换为#&10;
因为所有字符&lt; 0x20(&lt; - 我认为)需要在html中表示转义。
所以我的问题是,我做得对吗?我将替换更改为(" ", "\n<br/>");
。这是正确的方法吗?逃避一切,取代你认为“合法”的角色? ATM我想不出任何其他角色可以逃脱。
答案 0 :(得分:0)
我就是这样做的 - 逃避一切,然后替换安全的转义序列。也就是说,我认为你不需要替换所有字符&lt; 0x20 - 我在转义步骤中单独留下0x10(换行符)和0x13(回车符),然后用<br />
替换它们。虽然没有太大的区别。