新手问题 url 安全问题

xiaoxiao · 2013年07月07日 · 最后由 edgar_wang_cn 回复于 2013年07月07日 · 2771 次阅读

在 ruby 中我们可以使用网址来访问我们的数据库,比如这样的网址 localhost:3000/boys/get.json?name=123。他就向 controller boy 请求 get 这个动作,来返回 name=123 这个人的 json 信息。 boy controller 的内容如下: def get @boy=Boy.where(:name=params[:name]) respond_to do |format| format.json { render json: @boy } end end

但是这样是不是非常不安全,怎么能将这个网址加密,至少在浏览器上显示的 name=123 这个要用乱码表示。或者在每次提交的网址增加印证信息,如用户名密码等。大家的通用做法是什么。。

如果紧紧是因为想在浏览器的地址栏里看到名字的信息,你的提交为什么不用 post 呢?

楼主是想防伪造吧?

  1. 使用 HTTP Basic 或一些其他认证手段
  2. 用 HMAC 做签名

最简单的 加权限 get 的时候验证 session 当前用户是不是能得到这个信息 复杂一点的 加 token 但是要保证 token 不能被碰撞出来 也就是最好短期有效 经常刷新 最复杂的 不提供这个业务不就好了...

@hooopo 没感觉他想做加密隐藏

#5 楼 @badboy 以我的经验,我估计 LZ 自己也不知道到底要干什么

看来大伙还是很热心的。thx all

- -。这个应该可以利用 session 来判断是否是当前登录的用户的请求。比如使用 devise 时可以在 controller 中加入before_filter :authenticate_user!来限制未登录用户。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号