如何在ruby on rails中正确保护用户配置文件数据库表



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

在这里,他们可以填写自己的姓名、年龄、选择、生日,并填写个人数据、关于我等信息。

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

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

我应该设置最大长度验证规则吗?我不太清楚该怎么处理。

我有下拉选择菜单,文本区域框,和大量的文本字段,有关用户的数据将被输入。

你会如何处理这个问题和/或什么是最合适的处理方式?

亲切问候

最常见的威胁是试图通过此类提升权限。例如,如果您有一个带有admin属性的用户表,该属性用于确定用户是否为管理员,即使不能在您描述的表单中设置该属性,用户也可以根据相应的列数据类型,在页面上用&admin=true&admin=1为表单的操作编写帖子。

针对这种情况的保护是在模型中指定可通过批量分配更新的属性。

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

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

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

另一件需要注意的事情是自动注册。为此,你可以做几件事。最常见的是实现captcha。如果没有这一点,有人可能会编写一个脚本,在您的表中创建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

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

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

关于captcha的另一件事,我听说屏幕上显示的任何东西都可以被脚本刮走,所以尽管看起来很安全,但有一些有才华的人可以像Macarena一样在你的安全周围跳舞。

尽可能地积极主动,并仔细考虑你的应对措施。

很难在这里列出您需要做的一切,以保护自己免受某种恶意用户的攻击。

您可能只需要阅读RubyonRails安全指南:

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

最新更新