在javascript中过滤转义的尖括号

时间:2011-10-18 14:16:18

标签: javascript html escaping security entities

我有一个javascript功能,允许用户在页面上放置任意文本字符串。我不希望他们能够插入html或其他代码,只是纯文本。

所以我认为剥离所有尖括号(< >)都可以解决问题。 (我不在乎他们是否在页面上'破坏'html,或者他们无法在文本中放置尖括号)然后我意识到我必须过滤转义的尖括号(&lt; {{ 1}})和其他人。

出于安全考虑,我需要过滤掉什么?是否会删除所有尖括号?

2 个答案:

答案 0 :(得分:3)

  

删除所有尖括号是否可以解决问题?

只需用转义后的表单替换所有尖括号即可。这样,人们可以根据自己的喜好编写尽可能多的“代码”,而只是显示为纯文本。

答案 1 :(得分:2)

确保您要做的第一件事是将&替换为&amp;

a)对于HTML内容,只需<即可。

b)对于属性值,例如,如果它在<input name="sendtoserver" value="custom text"/>中,则需要处理双引号,但这就是必要的。仍然可以<>

这取决于具体情况。如果您想要安全地播放,请告诉您的JavaScript使用不需要编码的innerText,但您可能希望将css设置为white-space:pre-wrap。这样不易出错,但浏览器兼容性较差。

c)在松散相关的注释中,当使用反斜杠转义JavaScript字符串终止符时,可能隐藏在你身上的项目是如果你将内容放在脚本中,你需要处理</script>(不是这种情况)敏感)你可以逃避<//就够了