我有一个javascript功能,允许用户在页面上放置任意文本字符串。我不希望他们能够插入html或其他代码,只是纯文本。
所以我认为剥离所有尖括号(<
>
)都可以解决问题。 (我不在乎他们是否在页面上'破坏'html,或者他们无法在文本中放置尖括号)然后我意识到我必须过滤转义的尖括号(<
{{ 1}})和其他人。
出于安全考虑,我需要过滤掉什么?是否会删除所有尖括号?
答案 0 :(得分:3)
删除所有尖括号是否可以解决问题?
只需用转义后的表单替换所有尖括号即可。这样,人们可以根据自己的喜好编写尽可能多的“代码”,而只是显示为纯文本。
答案 1 :(得分:2)
确保您要做的第一件事是将&
替换为&
a)对于HTML内容,只需<
即可。
b)对于属性值,例如,如果它在<input name="sendtoserver" value="custom text"/>
中,则需要处理双引号,但这就是必要的。仍然可以<
和>
。
这取决于具体情况。如果您想要安全地播放,请告诉您的JavaScript使用不需要编码的innerText
,但您可能希望将css设置为white-space:pre-wrap
。这样不易出错,但浏览器兼容性较差。
c)在松散相关的注释中,当使用反斜杠转义JavaScript字符串终止符时,可能隐藏在你身上的项目是如果你将内容放在脚本中,你需要处理</script>
(不是这种情况)敏感)你可以逃避</
或/
就够了