php API项目

做了一个api接口项目,这个api是向纯前端开放的,后端如何验证前端带来的数据,不被非法调用呢?因为前端JS数据都会暴露的,如何验证?

阅读 2.9k
3 个回答

需要登录的,验证登录信息。
不需要登录的,没法验证。

人家能访问你的页面,而你的页面又访问了你的接口,

人家直接访问你的接口
有什么区别?

如果不想接口被直接访问,你可以考虑判断一下访问来源,来自哪个域名;或者打开页面的时候生成一个token,访问接口的时候验证这个token.

但这些都不能从根本上解决问题。
从根本上说就是你页面能用的接口,别人也是可以访问到的,所以,页面中不需要使用的数据,你就尽量不要给了。

先说句题外话。
接口不可能隐藏起来不被别人调用,要做的就是做好用户权限控制,即使这样,只要前端提交数据带上了凭证(cookie,token)以及做检测的字段,后端是发现不了是不是非法调用的。就像百度贴吧防止灌水一样,只有将几个跟登录有关参数提交给后台,还是可以直接使用API发帖子

根据你的情况,前后端分离,个人不建议使用cookie,session做控制,使用token好一点:

  1. 前端使用账号密码登录,登录成功,后端生成token,写入数据库,有效期暂定两小时吧,返回给前端

  2. 前端在http headers中添加Authorization: [Token]访问接口

  3. 后端拿出token跟数据库比对,取出用户信息,如果验证不通过,返回403

新手上路,请多包涵

前后端分离,可以参考一下开源项目:VueThink,TP+VUE,只用过
后端服务API做过,部分参考微信接口设计方案,不过微信为了安全设置了2小时有效期感觉对一般项目不必要
我之前做的后端的接口安全方案(已商用)是这样的:
sign=md5(appkey+appsecret+timestamp+nonce)每次请求带上sign、appkey、timestam、nonce,服务端判断失效(10秒以内次签名有效),判断nonce(每个时效周期内只能用一次),然后再计算签名判断。

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