我使用MongoDB作为后端,这让我相信我不应该担心我的数据库中的XSS。
对于"前端"我通过JSP生成页面。现在,我虔诚地逃避用户生成的内容(应该是纯文本 - 没有Javascript或HTML标签),但我不相信自己100%。
在阅读了一些关于XSS的指示之后,我想知道以下黑客是否会使我的网站失败。
在服务器端消费用户生成的输入时,我想替换用户生成的内容中的所有括号,例如()
[]
。我希望将所有<>
符号替换为:
单个左指角度引号:<
单右指角引号:>
现在,我假设没有()
和<>
,编写一个JavaScript XSS几乎是不可能的。
这种黑客行为还是我错过了什么?
答案 0 :(得分:0)
您在上述评论或问题中陈述或暗示以下内容,转述:
<div> tainted data here </div>
<script>$('#someid').populate($.parseJSON('<%=StringEscapeUtils.escapeEcmaScript(jsonString)%>'));</script>
StringEscapeUtils.escapeEcmaScript
用于上述JavaScript上下文<
和>
个字符鉴于上述情况,我没有看到XSS的任何发生方式。如果您不转义<
和>
,那么您的代码might be susceptible to some weirdness将关于脚本数据转义状态。这种奇怪可能会导致XSS。
我建议使用Coverity Security Library Escape.jsString方法转义数据,而不是过滤,该方法会转义<
和>
。 (完全披露:我在Coverity工作并致力于该图书馆。)