security - GWT SafeHTML、XSS 和最佳实践

标签 security gwt xss owasp

OWASP 的优秀人员强调,您必须对 HTML 文档中要放入不受信任数据的部分(正文、属性、JavaScript、CSS 或 URL)使用转义语法。请参阅OWASP - XSS 。他们的 API(由 ESAPI 团队开发)随后满足了这一需求,为每个上下文提供了编码器:

ESAPI.encoder().encodeForHTML(“输入”); ESAPI.encoder().encodeForHTMLAttribute(“输入”); ESAPI.encoder().encodeForJavaScript(“输入”); ESAPI.encoder().encodeForCSS(“输入”); ESAPI.encoder().encodeForURL(“输入”);

随后,这使得开发人员能够满足 DOM-based XSS .

所以我的问题是 GWT 的 safehtml 包如何满足这个需求,还是仅仅关注 HTML 编码?

最佳答案

SafeHtmlTemplates 会这样做(但仅限客户端,因为它依赖于 GWT 生成器)。它将使用“tag soup”解析器解析 HTML 片段,该解析器将推断上下文,如果参数不能在此上下文中使用,则记录警告或抛出异常(例如,它阻止在脚本上下文中使用所有占位符) 。虽然这仍然在变化( SafeUri 仍在审查中, SafeStyles 仍然受到严格限制),但它会在适当的时候出现(我认为应该在 GWT 2.4 中)。

否则:

  • SafeHtmlUtils 的将逃脱所有 < , > , & , '"因此结果对于“HTML”和“HTML 属性”上下文是安全的
  • SafeHtmlBuilder的各种追加方法只会调用 SafeHtmlUtils在引擎盖下
  • UriUtils 提供清理不安全 URI 的工具(如果您正在构建 HTML 字符串,则之后仍需要 SafeHtmlUtils 传递或等效项 - 与直接使用图像源或 anchor 的 href 的值相比)。
  • SafeStyles本身没有提供任何具体内容,但是 SafeHtmlTemplates只允许它出现在 CSS 上下文的开头,并且如果您尝试在 CSS 上下文中放入其他内容,则会记录一条警告。 SafeStylesBuilder预计将通过类型安全方法进行扩展,以帮助构建格式良好 CSS。
  • I've been workingSafeUri上界面,类似SafeStyles但在 URL 上下文中。在适当的时候,SafeHtmlTemplates只允许 SafeUriString作为 URL 属性的完整值,传递 String通过UriUtils以确保其安全。

简而言之,我认为您问题的答案是:是的,GWT 的 safehtml 包可以满足此要求;但您可能必须始终使用最新版本的 GWT(至少在来年)才能保证安全

关于security - GWT SafeHTML、XSS 和最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177329/

相关文章:

linux - 包含临时文件的文件夹的权限

ASP.NET Web 应用程序防止拒绝服务攻击

ios - 与 iOS 推送通知证书相关的安全风险

ajax - 带有 GWT 应用程序的 HtmlUnit 返回不完整的页面

java - 防止对 Tomcat/Struts 1 Web 应用程序的 XSS 尝试(无源代码)

php - 形式安全。 PHP MySQL

gwt - 在GWT中动态替换DIV的内部文本

java - Google guava 单例 Eventbus 多次触发

javascript - 删除外部 JavaScript 中不需要的部分

validation - IsValid()是否可以防御XSS?