【问题标题】:Java ESAPI IMPLEMENTATIONJava ESAPI 实现
【发布时间】:2017-12-21 17:29:07
【问题描述】:

我有一个关于用于 xss 保护的 owasp ESAPI 接口的问题。为了简单明了,我正在使用 fortify 进行源代码审查。 应用程序实现 ESAPI 并调用 ESAPI.encoder().canonicalize(user input) 并且不做任何进一步的验证并打印输出。这仍然容易受到 xss 的攻击吗 PS:反射点在 html 元素内。 我浏览了所有关于堆栈溢出中的 ESAPI 接口的帖子,但不太明白 任何帮助将不胜感激

【问题讨论】:

  • 如果需要更多信息,请告诉我。抱歉,如果我提出问题的方式很奇怪。提前致谢
  • 如果需要更多信息,请告诉我。抱歉,如果我提出问题的方式很奇怪。提前致谢

标签: filter xss owasp esapi


【解决方案1】:

canonicalize 本身并不能阻止 xss。它对数据进行解码,但您想要相反,对数据进行编码。

它不仅允许直通<script>alert(1)</script> 之类的内容,而且还可以将<script>alert(1)</script> 从不可执行的脚本解码为可执行的。

您想要的方法是encodeForHTML。这将对数据进行编码,以便可以安全地将其插入 HTML 上下文中,因此 < 将变为 < 等等。

另外,通过检查这些字符是否被接受来检查您是否已经在进行 HTML 编码。一些模板语言和标签会自动进行编码。

【讨论】:

  • 这里有一个小疑问。这里我们也使用 ESAPI.encodr() 来调用编码器。规范化()。那么编码器不是对来自 canonicalize 方法的解码输出进行编码
  • @itzkmv 只有调用其中一种编码方法,编码器才会进行编码。一些方法改为解码。
  • 有疑问,ESAPI.encoder() 中的encodevmethod 是不是。 canonicalize() 通过 canonicalize 方法对解码后的输出进行编码
  • 感谢简洁而准确的回答
  • 否,ESAPI.encoder 方法检索编码器对象。在你调用它的特定方法之前,它不会对字符串做任何事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 2012-03-21
  • 2012-09-06
相关资源
最近更新 更多