Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails中正确保护用户配置文件数据库表?_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Rubygems - Fatal编程技术网

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

Ruby on rails 如何在RubyonRails中正确保护用户配置文件数据库表?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,我正在建立一个社区网站,用户可以在这里注册并创建个人资料。 现在,当用户注册后,他们可以单击链接将他们带到网站的编辑配置文件区域 在这里,他们可以填写自己的姓名、年龄、选择、生日,并填写个人数据、关于我的信息等 我想知道保护我的profiles表免受恶意黑客攻击的最佳方法是什么?大多数类似的网站似乎没有任何形式的验证,当涉及到他们的编辑配置文件部分的网站。因此,用户可以不填写任何内容,仍然可以提交没有问题的表单 我想知道什么是允许这种功能同时保护我的数据库的最好方法 我应该设置最大长度验证规则吗

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

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

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

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

我应该设置最大长度验证规则吗? 我不太清楚如何处理这件事

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

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


善良的问候

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

您可能应该阅读RubyonRails安全指南:


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

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

您可以使用
attr\u accessible
方法执行此操作

attr_accessor :x, :y, :admin
attr_accessible :x, :y
这将防止通过通常在编辑操作中使用的
update\u attributes
调用来更新admin属性

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

对于编辑页面保护,最常见的保护方法是在控制器中使用before_过滤器,确保用户在呈现页面之前拥有一些会话信息

class UsersController < ApplicationController

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

  private

  def protect
    unless current_user
      redirect_to login_path
    end
  end

end
class UsersController[:edit]
私有的
def保护
除非是当前用户
重定向到登录路径
结束
结束
结束
只是一些例子。我相信还有很多方法可以保护你自己,但这至少会让你知道哪些地方需要注意,以防止最基本的破坏你一天的尝试。本主题的问题在于,用于破坏/劫持网站的技术不断发展。有些人认为他们被掩护了,无论如何都会被击中。经常通过脚本备份数据,编写其他脚本检查数据库的完整性。如果您看到表的用户实例突然增加,您就知道有什么问题了,请查看日志并恢复数据

如果你的网站很受欢迎,它将受到攻击,句号

关于验证码的另一件事,我听说屏幕上显示的任何东西都可以被脚本刮去,这样看起来就很安全了。有一些有才华的人可以像Macarena一样在你的安全装置周围跳舞


尽可能主动地采取应对措施。

首先,你必须确定要防范的威胁。可能重复的措施。也许还可以检查一下,从后者你可以学会利用漏洞,希望获得你的经验,发现你自己的网站的弱点免责声明:我不宽恕你的行为,也不承担责任,从这个信息