繁体   English   中英

通过替换所有方括号字符来防止Javascript XSS

[英]Preventing Javascript XSS by replacing all the bracket characters

我将MongoDB用于后端,这使我相信我不必担心数据库中的XSS。

对于“前端”,我通过JSP生成页面。 现在,我虔诚地逃避了用户生成的内容(应该是纯文本,没有Javascript或HTML标记),但是我不相信自己100%。

在阅读了有关XSS的一些知识之后,我想知道以下黑客攻击是否会使我的网站失效。

在服务器端使用用户生成的输入时,我想用[]替换用户生成的内容中的所有方括号,例如() 我想将所有<>符号替换为:单个左角引号:‹单个右角引号:›

现在,我假设没有()<>几乎不可能编写一段JavaScript XSS。

这个技巧会奏效还是我缺少什么?

在上面的评论或问题中,您已经表述或暗示了以下内容:

  • 污染数据在div数据状态上下文中插入,例如: <div> tainted data here </div>
  • 污染数据在嵌套上下文中插入:JavaScript单引号/双引号→脚本数据状态: <script>$('#someid').populate($.parseJSON('<%=StringEscapeUtils.escapeEcmaScript‌​(jsonString)%>'));</script>
  • 您可以使用Apache的百科全书JavaScript字符串逃避者StringEscapeUtils.escapeEcmaScript‌​对于上述的JavaScript环境
  • 您将过滤出<>字符

鉴于上述情况,我看不到XSS发生任何方式。 如果不对 <>进行转义,则您的代码可能会因脚本数据转义状态而有些奇怪 这种怪异可能导致XSS。

建议不要使用Coverity Security Library Escape.jsString方法对数据进行转义,该方法转义<> ,而不是进行过滤。 (完全公开:我在Coverity工作,并致力于该库。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM