前后端分离,如何防止接口被其他人调用或恶意重发

exman exman     2023-01-30     602

关键词:

前后端分离,如何防止接口被其他人调用或恶意重发?

首先,http协议的无状态特性决定了是无法彻底避免第三方调用你的后台服务。我们可以通过crsf、接口调用频率、用户行为分析(来源等)等各个方面来增加第三方调用的难度,也可以通过添加一个中间层比如node.js来实现;
1. 非法访问通常使用认证来解决,方法很多session,token,oauth第三方框架等等。

(1)常规的方法:用户登陆后生成token,返回客户端,然后服务器使用AOP拦截controller方法,校验token的有效性,每次token是一样的;
(2)用户登陆后生成临时token,存到服务器,并返回客户端,客户端下次请求时把此token传到服务器,验证token是否有效,有效就登陆成功,并生成新的token返回给客户端,让客户端在下一次请求的时候再传回进行判断,如此重复。 这种方法有性能问题,但也有一个漏洞,如果用户在一次请求后,还未进行下一次请求就已被黑客拦截到登录信息并进行假冒登录,他一样可以登录成功并使用户强制下线,但这种方法已大大减少被假冒登录的机会。

(3)两层token:一般第一次用账号密码登录服务器会返回两个token,时效长短不一样,短的时效过了之后,发送时效长的token重新获取一个短时效,如果都过期,那么就需要重新登录了。当然更复杂你还可以做三层token,按照业务分不同token。

2. 对于合法的认证访问,通常需要进行IP访问频率和次数的限制,各种API框架都有支持,比如Django restframework的throttling。
  通常我们可以通过使用过滤器和缓存如redis来判断访问次数及频率。在filter层加一个过滤器,拦截所有的请求,解析出请求的用户,然后通过缓存,获取到该用户当前已访问次数。而缓存,要求最好能够自动超时回收,也就是说比如你想设定三分钟内限制访问次数,那么你记录的缓存有效期就三分钟就好了,过了三分钟缓存自动失效,计数器也就重新从0开始了。类似于发短信的接口,每分钟只能发一次;
3. 最外层的限制可能需要在nginx上配置rate limit。

 

参考自:http://blog.csdn.net/codercwm/article/details/58607420

http://blog.csdn.net/mylovepan/article/details/38894941

 

 

  1. 1. 加密,时间戳,每个包要有包序号,每次同向加1,收到重复序号认为是攻击,可以抵御重放攻击。此外借助于HTTPS/TLS其自身机制,保证了消息完整性,并且可以抵御重放攻击。由于加密,对方也无法看到明文内容。

  2. 2

    2. 客户端生成一串随机数R1,发给服务器,服务器判断此R1是否重复,之后根据算法(R1+R2)生成密钥。最好是结合验签机制。

  3. 3

    3. https 会被中间人攻击,Fiddler 能用替换证书的方式截获并还原明文。非对称加密(例如RSA)是个好办法,不过你得防止别人直接反编译你的代码分析出你的明文拼接方式。

接口设计安全

...给其他程序或者客户端数据的桥梁。 安全要求  1.防止伪装攻击(不知明方调用接口)  2.防止请求篡改(请求的参数被篡改)  3.防止重复攻击(请求被截获,被再次恶意调用)  3.防止数据泄露(如登陆、支付信... 查看详情

微信小程序前后端分离怎么实现

微信小程序前后端分离的主要实现方式是将前端和后端的代码逻辑分开,前端负责展示和交互,后端负责数据处理和逻辑控制。下面简单介绍一下微信小程序前后端分离实现的一些关键步骤:1.前端代码开发:使用微信小程序开... 查看详情

为什么要前后端分离?前后端分离的好处和坏处是什么?

...目都是jquery+html写的。领导想让我推一下vue+vue-cli+webpack,前后端项目的想法,我正在做整理资料,我便想到了前后端分离项目的必然性的特点,和传统技术的优势;总结的最完美的一句话我觉得应该是前后端分离的主要概念就是... 查看详情

什么是前后端,有没有前后端分离,还有如何区分mvc与前后端分离

参考技术A1>>前后端分离的意思是,前后端只通过JSON来交流...同意其他几位,JSON只是一种可选的协议,而不是唯一,也未必是前后端通信的最佳方案。2>>组件化、工程化不需要依赖后端去实现...有哪些好处或弊端?前端... 查看详情

什么是前后端分离?为什么分离

参考技术A在不使用vue,react,anglar这类的框架的情况下,前后端分离应该如何做?需求是这样:前端写html页面(非单页面应用),index首页about关于我们newslist新闻列表newsdetail新闻详情productlist产品列表productdetail产品详情后台只提... 查看详情

[转]前后端分离开发模式的mock平台预研

.../接口,用一个虚拟的对象/接口来模拟,以便测试。背景前后端分离前后端仅仅通过异步接口(AJAX/JSONP)来编程前后端都各自有自己的开发流程,构建工具,测试集合关注点分离,前后端变得相对独立并松耦合开发流程后台编写和... 查看详情

前后端分离及不分离

前后端不分离  在前后端不分离的应用模式中,前端页面看到的效果是由后端控制,由后端渲染页面或重定向,后端需要控制前端的展示,前端与后端的耦合度很,这种应用模式比较适合纯网页应用,但是当后端对接APP时,APP... 查看详情

为什么要进行前后端分离

传统开发模式与前后端分离模式对比传统开发模式前后端分离方式对比以上两图我们可以看到,前后端分离方式流程简单多了。前后端分离概念简单来说就是后端提供API,前端调用API获取数据来渲染页面,当然这其中还有许多细... 查看详情

前后端分离

一丶为什么要实现前后端分离:前后端分离有什么好处按照项目开发来说:1.实现前后端分离可以使项目更快的研发完成,2.加快了项目的时间传统开发形式: 前后端分离开发:在开发阶段,当有新的需求时,前后端工程师约定好接... 查看详情

前后端分离与前后端不分离

前后端不分离  在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制的,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。  这种应用模式比较适合纯网页应用,但是当... 查看详情

node项目如何前后端分离提供接口给前端

node接口编写,vue-cli代理接口方法    通常前端使用的MocK数据的方法,去模拟假的数据,但是如果有nodeMongodb去写数据的话就不需要在去mock数据了,具体的方法如下。首先启动mongodb、node、以及前端项目。这里用加载商... 查看详情

前后端分离与不分离

前后端不分离   在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。    这种应用模式比较适合纯网... 查看详情

我们为什么要尝试前后端分离(代码片段)

这不是一篇纯技术文章,而是一篇分享我个人在前后端分离路上收获的点点滴滴的文章,以此来为准备尝试前后端分离或者想了解前后端分离的童鞋做一个大体的讲解。 尝试与改变如果你没有尝试过前后端分离的工作流程,... 查看详情

jsp与前后端分离谁更快

前后端分离更快前后分离的优势:1.可以实现真正的前后端解耦,前端服务器使用nginx。前端/WEB服务器放的是css,js,图片等等一系列静态资源(甚至你还可以css,js,图片等资源放到特定的文件服务器,例如阿里云的oss,并使用... 查看详情

前后端的分离

...板,前端完全可以根据数据自行渲染页面/模板,这样,前后台交互就可以简化为数据的增删改查。利用AJAX技术,实现页面局部刷新,促使了前后台分离的可能性。那么,如何利用前后端分离开发模式,开始一个项目呢?1.产品文... 查看详情

前后端分离与前后端不分离的区别

前后端不分离   在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。    这种应用模式比较适合... 查看详情

前后端分离与不分离

 前后端不分离    在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。     这种应用... 查看详情

前后端分离

开发模式在Web开发模式中,有两种开发模式前后端不分离前后端分离前后端分离优势在前后端不分离模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合... 查看详情