image - 对于 SafeHtml,我们是否需要清理 <img src=link> 标签中的 "link",GWT?

标签 image gwt tags sanitize

我有一个允许用户放置图像链接的文本框(例如:http://abc.test.gif)和另一个允许用户放置替代文本的文本框(例如:“这是 test.gif”)和一个提交按钮。

当用户点击提交按钮时,程序会生成<img src="http://abc.test.gif" alt="This is test.gif">此字符串并将其存储到数据库中以备后用。

我的问题是:我需要清理图像链接 "http://abc.test.gif" & alt 标签中的文字 "This is test.gif"
例如,我是否需要使用 UriUtils.isSafeUri("http://abc.test.gif"); & SafeHtmlUtils.fromString("This is test.gif"

最佳答案

您故意允许用户输入他想要的任何内容,这些内容将进入 srcalt img 的属性标签。这确实对任何类型的 XSS 攻击开放。看看 here对于一些例子,在最近的浏览器仍然可以工作。

此外,您将字符串存储在您的数据库中以供以后使用(猜测),因此攻击可能会在稍后发生,当您将使用此类字符串在 DOM 中创建节点时,会产生更多不可预测的结果。

一种解决方案可能是仅在数据库中存储 URL 和替代字符串(如果有适当的输入验证),并生成安全的 img在您需要时使用一个简单的模板(或以编程方式使用 SafeHtmlBuilder )。

public interface Template extends SafeHtmlTemplates {
  @Template("<img src=\"{0}\" alt=\"{1}\"/>")
  SafeHtml img(SafeUri uri, SafeHtml alternativeText);
}

像这样使用:
template.img(
    UriUtils.fromString(yourValidatedDbUrl),
    SafeHtmlUtils.fromString(yourValidatedAlternativeText));

这样你:
  • 验证用户输入;
  • 仅存储经过验证的值(原样);
  • 仅在真正需要时以安全的方式生成 img 片段。
  • 关于image - 对于 SafeHtml,我们是否需要清理 <img src=link> 标签中的 "link",GWT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392625/

    相关文章:

    ios - iCloud 中的 CoreData 和照片问题

    java - 结合android和gwt?

    html - 使用 Angular2 的 HTML 标签中的变量

    html - 这是什么类型的 perl?

    javascript - Smartclient GWT 使用自定义数据源使 ListGridRecord 字段可编辑

    php - 获取laravel中带有特定标签的所有数据

    node.js - 如何使用 Node.js 保存图像(作为 Base64 编码字符串传入)

    IOS:将数据存储到文本文件中

    具有动态加载图像的 jQuery galleria 插件

    eclipse - GWT 编译 "Add an entry point module"对话框