【问题标题】:How to correctly protect a user profiles database table in ruby on rails?如何正确保护 ruby​​ on rails 中的用户配置文件数据库表?
【发布时间】:2012-01-14 12:58:14
【问题描述】:

我正在建立一个用户注册和创建个人资料的社区网站。 现在,当用户注册后,他们可以单击链接将他们带到网站的编辑个人资料区域。

他们可以在这里填写他们的姓名、年龄、选择、生日并填写个人统计信息、关于我等内容。

我想知道保护我的个人资料表免受恶意黑客攻击的最佳方法是什么?大多数类似的网站在网站的编辑配置文件部分似乎没有任何类型的验证。因此,用户可以不填写任何内容,仍然可以毫无问题地提交表单。

我想知道在允许这种功能的同时保护我的数据库的最佳方法是什么?

我应该只设置最大长度验证规则吗? 我不太确定如何处理。

我有下拉选择菜单、文本区域框和大量文本字段,用户数据将输入到这些字段中。

您将如何处理和/或最合适的处理方式是什么?

亲切的问候

【问题讨论】:

  • 首先,您必须确定要防御的威胁。
  • stackoverflow.com/q/262145/1114171 的可能重复基本上是OWASP。也许还可以查看 HackipediaHtS 从后者您可以学习利用漏洞,希望获得发现自己网站中的弱点的经验 免责声明:我不宽恕也不对您的行为承担责任信息

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems


【解决方案1】:

要注意的最常见威胁是尝试通过此类提升特权。例如,如果您有一个带有 admin 属性的用户表,用于确定用户是否是管理员,即使无法在您描述用户的表单中设置此属性,也可以在页面上为表单的操作制作帖子&admin=true&admin=1 取决于对应的列数据类型。

防止这种情况的方法是在模型中指定可通过批量分配更新的属性。

您可以使用attr_accessible 方法来执行此操作。

attr_accessor :x, :y, :admin
attr_accessible :x, :y

这将防止通过通常在编辑操作中使用的update_attributes 调用更新管理属性。

另一件需要注意的是自动注册。为此,您可以做几件事。最常见的是实施验证码。如果没有这个,有人可能会编写一个脚本,在您的表中创建 1_000_000 个用户,从而很难确定哪些是真实的,哪些是假的。例如,您还可以考虑按 IP 记录注册尝试并限制一小时内的请求数。

至于您的编辑页面保护,最常见的保护方法是在您的控制器中使用 before_filter,以确保用户在允许呈现页面之前拥有一些会话信息。

class UsersController < ApplicationController

  before_filter :protect, :only => [:edit]

  private

  def protect
    unless current_user
      redirect_to login_path
    end
  end

end

只是一些例子。我相信还有更多的方法可以保护自己,但这至少会让您了解需要注意的地方,以防止最基本的尝试破坏您的一天。该主题的问题在于用于破坏/劫持您的网站的技术正在不断发展。有些人认为他们被覆盖并且无论如何都会受到打击。通过脚本经常备份您的数据,编写检查数据库完整性的其他脚本。如果您看到表的用户实例突然飞跃,您就会知道发生了什么事,请查看日志并恢复您的数据。

如果你的网站很受欢迎,它就会受到攻击。

关于验证码的另一件事,我听说屏幕上显示的任何内容都可以被脚本抓取,因此看起来很安全,因为那里似乎有才华横溢的人可以像 Macarena 一样在你的安全周围跳舞。

尽可能主动并深思熟虑您的反应措施。

【讨论】:

    【解决方案2】:

    很难在此处列出您需要做的所有事情以保护自己免受某种恶意用户的侵害。

    您可能应该只阅读 Ruby on Rails 安全指南:

    http://guides.rubyonrails.org/security.html

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 2015-06-18
      • 1970-01-01
      • 2012-01-06
      • 2019-05-16
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 2017-03-29
      相关资源
      最近更新 更多