【问题标题】:How to sanitize an attribute value in rails如何清理rails中的属性值
【发布时间】:2011-12-28 13:06:27
【问题描述】:

在 Rails 中清理属性值的最佳方法是什么?代码如下所示:

<img alt="<%= h 'untrusted-data' %>" src="image-source-here" />

我特别关心owasp.net XSS prevention cheat sheet.上给出的Rule #2Rule #3

  1. 将不受信任的数据插入 HTML 通用属性之前的属性转义
  2. 将不受信任的数据插入 JavaScript 数据值之前的 JavaScript 转义

html_escape 方法是否足以达到目的?由于某种原因,我不能在这里使用TagHelper 提供的tag 方法。使用 Rails 2.3.5 版本。

【问题讨论】:

标签: ruby-on-rails xss sanitize html-escape-characters


【解决方案1】:

是的,这已经足够了。 (虽然有另一个 " 但我想这是一个错字:)

<img alt="<%=h untrusted %>" src="img.png" />

h 将阻止untrusted 包含" 并将其替换为&amp;quot;,这样攻击者将无法摆脱alt 属性。此外,她也无法通过alt 属性利用某些东西,因为其中没有进行任何解析。

例如,如果它位于ahref 属性中,情况会有所不同,在这种情况下,攻击者即使无法退出,也可以在单击时运行一些javascript代码属性。 (如javascript:alert(/XSSed/);

【讨论】:

  • 请注意,如果在作为事件处理程序的 HTML 属性中使用不受信任的数据是不够的:erlend.oftedal.no/blog/?blogid=124
  • 是的,这就是我试图用href 示例解释的那种情况。
  • 好。这是 Ruby 的 html 属性编码的 OWASP 实现:github.com/thesp0nge/owasp-esapi-ruby/blob/master/lib/codec/…
  • 哦,这里有一个带有转义示例的 xss 游乐场:insecurelabs.org/Task
  • 对于 href,您必须:a) 对放入 url 中的内容使用 URL 编码 b) 如果您接受来自用户的 url,请确保 url 不以“javascript:”开头 - 这是由于编码很难正确,因此最好使用白名单并确保每个网址都以 http:// 或 https:// 开头
猜你喜欢
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 2017-06-15
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
相关资源
最近更新 更多