我在一个WebAPP项目中遇到了题主的这个问题。由于API是为APP准备的,因此在WebAPP中使用ajax和api进行交互也不得不按照app与api交互时的使用习惯。

在向api发出请求的时候,可能有两种情况,一种是用户登录,一种是未登录。无论哪一种情况,都可以采用下面的这种思路,但在使用token时使用不同的token即可。登录用户使用登录时服务端生成的带nonce的token,是唯一的,而未登录用户app在请求时,携带的是一个服务端和客户端约定好的token(尽可能保密)。

在api设计时,尽可能的遵循restful风格,因此,在提交的信息中,用于鉴权的token被放在header中,token鉴权是设计我是这样的思路:

app登录,服务端创建token(token为经过加密后的字符串,可被解密,解密后的数据中包含登录的用户信息或非用户登录状态下的约定好的token),并且将app与server端的时间差一并保存在redis中,并将token返回给app,app将其保存在本地,利用html5的localStorage可以轻松做到

app在请求api接口时,传入一个access_token,该access_token由token和时间戳运算后获得,从而保证了每一次发送的access_token是不同的,这个access_token的有效期为很短的一段时间,只要保证在网速比较渣的情况下有效即可

服务端在接收到这个access_token后,经过解密,从redis中取出对应的token所提供的数据,对时间差进行比较,超出一定时间的,认为无效,并获得该token对应的user_id或者判断token是否为约定值。

这个思路可以:

拒绝不携带access_token的非法调用

防止无意间抓取到某个access_token,想利用该access_token做大规模攻击

当然,这里加密解密会牺牲掉一些性能,这也只是我的一种思路。

php接口前端安全,前端js的ajax 调用PHP写的API接口,如何卡主安全性,防止非法调用呢?...相关推荐

  1. nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址

    做个记录,以后做简单的nginx的时候拿过来就用 这个配置实现了,对前端html的方向代理,并且,配置了对后端api接口的方向代理 E:\nginx-1.14.0\conf\nginx.conf #u ...

  2. 调用JShaman的Web API接口,实现JS代码加密。

    在NodeJS中,调用JShaman的Web API接口,实现JS代码加密. 同样的方法,也可把该功能集成到自己的产品或项目中,让自己也具备JS加密功能. 调用JShaman接口的源码非常简单: /* ...

  3. 拦截器读post参数导致接口post请求报错_vue中Axios的封装和API接口的管理

    一.axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中.他有很多优秀的特性,例如拦截请求和响 ...

  4. Python 调用有道翻译api接口翻译外文网站的整篇西班牙文实战演示

    Python 调用有道翻译 api 接口翻译整篇西班牙文实战演示 第一章:翻译效果展示 ① 翻译文章示例一[阿尔卡拉门的无海摩纳哥:"不到4万欧元,你就不能在这里租任何东西."] ...

  5. axis2 java.net.url_axis2调用.net写的webservice接口实现,指定参数名

    参考文章:https://blog.csdn.net/wangyu2016/article/details/76022928 使用axis2调用调用.net写的webservice接口时出现参数无法传 ...

  6. 调用个人微信的API接口实现微信收发消息

    调用个人微信的API接口实现微信收发消息 /** * 接受微信好友发来聊天消息 * @author wechatno:tangjinjinwx * @param ctx * @param vo */ ...

  7. 易语言 如何调用麦谈帮API接口?

    .版本 2 .子程序 __启动窗口_创建完毕 '添加并使用<精易模块> Send_API () .子程序 Send_API .局部变量 REQU_Data, 文本型, , , 提交字符串 ...

  8. 迎战2022 - Python中文翻译《环球时报》整篇文章实战演示,调用有道翻译API接口进行英文转中文翻译实例训练

    Python 调用有道翻译 API 接口翻译<环球时报>整篇文章实战演示 第一章:翻译效果展示 ① 翻译文章示例一[得益于中国援助的数字电视,喀麦隆农村社区享受着非洲国家杯] ② 翻译文章 ...

  9. php 调用新浪微博接口,php调用新浪微博短链接api接口地址例子

    短链接我们可以自己生成当然也可以调用第三方的如我们调用新浪微博短链接api接口即可生成自己要的地址了,下面来看一些小编总结的例子. 新浪短网址接口的稳定性和跳转速度还是很给力的,现给出其API说明. ...

最新文章

  1. android报错res\drawable-xhdpi\ic_Dianhua.png: Invalid file name: must contain only [a-z0-9_.]
  2. SAP gateway系统和后台系统的OData双重cache机制
  3. 关于Object.clone克隆方法的测试
  4. 谈身份管理之进阶篇 - 快速了解从管理到治理的最佳方案
  5. 6个最佳的开源Python应用服务器
  6. 一次订单号重复引起的事故,把我坑惨了!
  7. CentOS 6.7编写Shell脚本实现简单跳板机功能
  8. STM32+GM65二维码识别模块
  9. testbed常见问题及处理(1)
  10. c语言快速幂,快速幂
  11. 五大常用百度高级搜索语法
  12. 八行代码一键照片转漫画
  13. python 源代码 macd双底 高 低_久其软件怎么样MACD指标的双底形态特征详解
  14. 期末作业——基于机器学习算法的LOL比赛预测(求高分,拜托拜托)
  15. cmap参数 plt_小坑记录:get_cmap参数区分大小写-阿里云开发者社区
  16. 同一个页面显示多个html界面,浏览器怎么设置在同一个界面/窗口打开多个网页...
  17. 博主独资创办-卓明网,即将上线,敬请期待!
  18. 台式计算机c盘怎么清理空间,电脑C盘空间空间清理方法
  19. 朴素贝叶斯(演示结果与SVM进行对比)
  20. C语言学生信息管理系统(结构体数组,文件)

热门文章

  1. oracle怎么授权外地连接,Oracle异地RAC 简单介绍(Extended Distance Clusters)
  2. java udp 接收不定长_JAVA UDP通信为什么只能接收一次数据,我想要时刻接收数据,并更新UI,大神们帮我看看程序吧?...
  3. mybatis 一对多_Mybatis 强大的结果集映射器resultMap
  4. upload-labs_pass 9_::$DATA_绕过
  5. python安装不上怎么办_python安装不了怎么办
  6. __name__=__main__
  7. RocketMQ初探(五)之RocketMQ4.2.6集群部署(单Master+双Master+2m+2s+async异步复制)
  8. BZOJ——2697: 特技飞行
  9. [HAOI2007]理想的正方形
  10. MySQL查询不到中文的问题