我正在构建一个应用程序,它将(希望)处理会话创建并销毁JSON。目前,我发现这样做的最好方法是让Rails返回form_authentication_token
作为对登录成功的JSON响应的一部分,即(在我的Api :: SessionsController中):
def create
@user = User.find_for_authentication(email: params[:email])
if @user && @user.valid_password?(params[:password])
sign_in(@user)
render json: { success: true, token: form_authenticity_token }
else
render json: { success: false, errors: ['Invalid email or password'] }, status: 401
end
end
然而,我对CSRF相关安全性的了解并不足以让人知道这是不是一件坏事。任何帮助表示赞赏。
答案 0 :(得分:5)
我认为这应该是一件安全的事情。 Same Origin策略应该保护您免受恶意站点的攻击,该恶意站点能够执行您的某个用户的CSRF登录,并随后从响应中窃取令牌。浏览器不会向其他域上的主机提交JSON请求。
JSON劫持(http://haacked.com/archive/2009/06/24/json-hijacking.aspx)之类的东西在理论上是可行的(虽然它已经在我所知道的所有浏览器中打了补丁),但是假设以下情况,也应该减轻威胁: