ruby-on-rails - 如何清理 Rails 中的属性值

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

清理 Rails 中属性值的最佳方法是什么?代码看起来像这样:

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

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

  1. Attribute Escape Before Inserting Untrusted Data into HTML Common Attributes
  2. JavaScript Escape Before Inserting Untrusted Data into JavaScript Data Values

html_escape 方法足以达到目的吗?由于某种原因,我无法在此处使用 TagHelper 提供的 tag 方法。使用Rails 2.3.5版本。

最佳答案

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

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

h 会阻止 untrusted 包含 " 并将其替换为 ",这样攻击者就会无法走出alt属性。此外,她也无法通过alt属性利用某些东西,因为其中没有进行解析。

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

关于ruby-on-rails - 如何清理 Rails 中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8656274/

相关文章:

ruby-on-rails - Wicked_pdf 在开发中工作正常,但在生产中却不行

ruby-on-rails - 如何修复 Mavericks 上 Gemfile 的 libv8 错误?

iis - 在 IIS 中设置 301 重定向的自定义响应正文

ruby-on-rails-4 - Ruby on Rails:.html_safe和sanitize()之间的区别

php - 使用 PHP filter_input_array 过滤多维 POST

ruby-on-rails - 如何使用 Rails 4 以一种形式添加多个多对多字段?

ruby-on-rails - Passenger + Capistrano + Apache = Rails 应用程序未运行

xss - 防止 XSS 攻击

java - 使用 Google App Engine (GAE) 防止跨站点脚本编写的最简单方法(框架/库/调用)是什么?

javascript - 有没有办法配置 ng-bind-html 来渲染像 '</' 这样的字符串?