前后端分离判断请求来源

如果项目前后分离,前端只能用ajax调用后端接口获取数据,那后端如何判断请求来源?

1. 通过类似token:

1.1、是要后端提供一个token接口,然后前端通过接口获取token。(接口都有了那说明谁都可以拿到token。不靠谱)
1.2、后端提供token + 请求域名白名单。(通过HTTP_REFERER 获取请求域名来源进行判断....不太靠谱)

上面是我想到的办法。还有没有相对安全的方法,麻请提供思路。

阅读 9.6k
10 个回答

前后端分离之后,判断来源的目的基本都是保障安全性,只是鉴定来源的话request header里面的origin是不是可以用一下?然后通过token、jwt等一系列的鉴定机制,再试试?

但是个人觉得只要这个token能带到客户端,就有危险,所以分离之后为了安全,更倾向于以下方案

1、前后端分离之后,前端使用nginx作为服务器,并且反向代理到后端接口,注意这里反向代理到后端服务器的内网IP+端口上去,并且关掉后端域名的外网映射
2、接口服务器上接到请求之后,可以查一下X_forward_for的ip链路,看下中间的代理IP是不是自己nginx服务器的,加个白名单
3、如果实在需要开放外网映射去做一些诸如授权、支付类的功能的话,nginx层依旧保持内网ip转发,添加域名访问的白名单,包括域名和ip

大致就这样~

除请求的用户相关认证与鉴权。
请求带上csrf token,后端认证,
设置Access-Control-Allow-Origin,
后端非特殊情况关闭外网映射,必要时还可以上ip白名单
综合使用已经足够安全了。

token 后端提供的token接口是要验证用户信息的
不是说我一个get请求过来就给你一个token
token的信息当中可以包含 你的客户端来源 基本用户信息 过期时间等

token一般是登录后后端返回的,前端负责存下中,下次ajax请求的时候都会带上这个token,后端则对这个token做合法性校验,通过则继续,不通过则返回一个token失效的状态码,前端根据状态码自动跳转到登录页面。

  1. AJAX请求/login接口,把用户名和密码POST上来,PHP为该用户生成一个token并返回给前端。
  2. 前端把token保存在浏览器的localStorage中。
  3. 前端判断除login之外的请求都带上token,可以通过header中的Authentication头发送。
  4. PHP如果验证token有效就能识别用户,执行操作。
  5. 如果PHP端发现token无效,可以返回401错误给前端,JS将用户引导到登录页面

你说的token没什么用, 只要在客户端暴露了都没啥用, 你可以限制REFERER 和 允许跨域的域名

判断请求来源? 不太明白啊 是端口不一样 比如:pc端 移动端 还是不同页面
请求时 价格参数呢,type 1代表什么 2代表什么 后端获取type 做判断就是了

前端做登录鉴权,后端可以做时间令牌

相对地,基于用户授权(即需要用户填写帐号密码)获得的token,才是可信的。

前端请求基本都可以伪造的,所以没有绝对的可信。

判断请求来源,
可以设计接口统一一个header或 get post 参数 type 过来
如:type=h5 就是h5 ,type=android 就是 安卓 ,还有ios
,或者你token 就带上 type 比如 xxxtoken,token=h5 ,后端过来后 获取token是校验,和类型则是你要的来源

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题