【发布时间】:2013-12-01 06:16:53
【问题描述】:
我仅在用户单击浏览器中的按钮时才尝试在 Rails 中创建会话。使用 jQuery 解决此问题的最佳方法是什么?
这样的实际用途可能是:
- 防止警报在关闭后再次显示。
- 记住不同阶段的用户信息。
- 在操作完成后保存基本的一次性设置。
我想出了这个:
HTML:
<button id="startSession">Start a Session!</button>
jQuery:
$("#startSession").click(function() {
$.ajax({
url: "/sessions-manager?add=funkysession"
});
});
然后控制器看起来像:
get "/sessions-manager" do
name = params[:add].to_sym
session[name] = true #=> session[:funkysession] = true
# A session named "funkysession" has now been started
end
但是,我觉得这种方式很容易被利用。例如,人们可以手动输入/sessions-manager?add=user 并伪造一个用户会话来访问我的应用程序的受保护区域。有没有更安全的方法来开始会话?
【问题讨论】:
标签: jquery ruby-on-rails security session sinatra