[英]Preventing Javascript XSS by replacing all the bracket characters
我将MongoDB用于后端,这使我相信我不必担心数据库中的XSS。
对于“前端”,我通过JSP生成页面。 现在,我虔诚地逃避了用户生成的内容(应该是纯文本,没有Javascript或HTML标记),但是我不相信自己100%。
在阅读了有关XSS的一些知识之后,我想知道以下黑客攻击是否会使我的网站失效。
在服务器端使用用户生成的输入时,我想用[]
替换用户生成的内容中的所有方括号,例如()
。 我想将所有<>
符号替换为:单个左角引号:‹单个右角引号:›
现在,我假设没有()
和<>
几乎不可能编写一段JavaScript XSS。
这个技巧会奏效还是我缺少什么?
在上面的评论或问题中,您已经表述或暗示了以下内容:
<div> tainted data here </div>
<script>$('#someid').populate($.parseJSON('<%=StringEscapeUtils.escapeEcmaScript(jsonString)%>'));</script>
StringEscapeUtils.escapeEcmaScript
对于上述的JavaScript环境 <
和>
字符 鉴于上述情况,我看不到XSS发生任何方式。 如果不对 <
和>
进行转义,则您的代码可能会因脚本数据转义状态而有些奇怪 。 这种怪异可能导致XSS。
建议不要使用Coverity Security Library Escape.jsString方法对数据进行转义,该方法转义<
和>
,而不是进行过滤。 (完全公开:我在Coverity工作,并致力于该库。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.