关于Rails5中的安全性的一些问题



我对当前的应用程序有很多安全问题,我想知道我是否会在以下方面受到滥用。

a( .我的主要访问控制方法是在我的应用程序控制器中维护current_user,current_company current_project方法。这些方法基于存储的会话密钥返回对象,会话密钥在用户登录时建立,在用户注销时清除。I.e如果我想了解当前用户的一些信息,我可以调用"current_user.prole",或者如果我想看看用户试图更改的帐户是否属于他,我会检查url中请求的相关帐户id是否真的属于该用户,基本上如下

账户控制器

def account_info
redirect_to login_path if !user.logged_in
account_id=params[:account_id]
@account = Account.find(account_id)
unless account_belongs_to_user(account_id)
redirect_to unauthorized_path
end

结束

在我的应用程序控制器中,当用户最初经过身份验证时,我会执行以下操作:

session[:current_user_id] = user.id

并在用户注销时清除该会话密钥。

然后,当请求account并调用account_belongs_to_user时,应用程序控制器会处理它,大致如下:

def account_belongs_to_user(account_id)
account = Account.find(account_id)
return account.user_id==session[:current_user_id]
end       

所以我想我的安全方案最终取决于会话数据是否安全,而不是微不足道的欺骗。

b( 当我渲染页面时,我有时会将具有敏感数据的对象传递到我的erb页面以生成页面文本。

例如,我可能会将一个"公司"对象(ActiveRecord(传递给视图,以生成发票屏幕。但是传递为@company的company对象有很多敏感数据,比如访问密钥等等。若我并没有特别包括一些东西,比如:,我并没有完全意识到它的内部结构

<%= @company.access_token %> 

在我的网页上,我能确信@company的属性不会以某种方式传递到浏览器中吗?除非我特别要求在页面上呈现它们?

当使用rails为AngularJS单页应用程序提供数据时,这显然是一个问题,因为我为Angular传递的用于呈现页面的所有信息可能都是邪恶分子可以访问的,即使不在页面本身,但我希望rails在服务器端生成的页面不是这样。

这可能是一个天真的问题,但谢谢你,因为在开始到处泄露秘密之前,我只想确定自己在做什么。

使用active_record回调对令牌进行身份验证https://guides.rubyonrails.org/active_record_callbacks.html

相关内容

  • 没有找到相关文章