为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止第三方网站私自调用网站的后端接口

如何防止第三方网站私自调用网站的后端接口

lykss 2015-12-31 21:58:36
对于前后端完全分离的网站,后端采用PHP向前端输出json格式的数据,而前端通过ajax向后端调用接口获取数据。这种情况下,后端的接口如果没有采取一定的保护措施是很容易被其他人恶意调用来做一些非法操作。那么,现在在这种前后端完全分离的网站架构下有哪些主流的对后端接口保护的做法?我所知道的只有时间戳,希望慕课网的大大可以分享一下。
查看完整描述

3 回答

已采纳
?
I_尼克哇

TA贡献56条经验 获得超25个赞

如果只是时间戳就会被伪造。

并且需要根据不同应用场景来找解决方法:

  1. ajax接口是php程序生成后输出到前端页面的(每次ajax请求接口之前是打开php页面的),这个方法很简单,后端使用时间戳+sign(通过一个key和时间戳md5加密的)去请求后端接口,每次验证sign是否正确就可以了。这里需要注意打开网页 和 ajax接口请求的时间间隔,请求后端验证接口就是验证这个的,sign是为了防止伪造时间戳。

  2. 对于一个网页打开后,ajax请求是通过用户 点击或者其他动作触发的,上面的方法不能彻底防止,或者他人通过抓取页面后拿到的ajax接口也不能彻底防止。可以使用websocket,来实时获取接口,不过代价有点大,对于想玩技术的人可以试试。

对于抓取页面获取ajax接口后再频繁请求ajax接口,也只能封ip了。

希望对你有帮助,其他同学有好的方法也可以互相探讨下。

查看完整回答
反对 回复 2016-01-12
  • lykss
    lykss
    您好,首先得说声不好意思,之前没有关注自己提的这个问题,所以也没去留意有没有人回答了。对于你说的这个方案感觉还是不错的,但对于那些经验丰富的老手来说会不会比较容易破解呢?本人新手,所以不知道老手看到这种加密的时候会如何处理。其实我想探讨的是,能不能找到一种比较隐藏的方式去加密呢?就是尽可能不在接口中传递对应的值,因为是个前端的都会去关注请求中的字段,感觉还是有点不安全,个人见解。
  • I_尼克哇
    I_尼克哇
    可以尝试非对称加密方式
?
慕男婶

TA贡献98条经验 获得超73个赞

啊,很有价值的问题,关注!如果你自己找到了解决办法,请分享一下!

查看完整回答
反对 回复 2016-01-01
  • 3 回答
  • 8 关注
  • 6832 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信