如何防止app接口被别人调用
app开发的时候,如何保护app的接口呢?
用https是我想到的办法,但是不知道怎么实现,所以就考虑用token,虽然不是绝对有效,但是能防止一般的用户来攻击,高手非要攻击,只能报警了吧。
token=“$(参数md5|按一定规则修改的字符串|时间戳|用户Id)$”=fasdfasdfasdfasdfadfadfasd
服务器端构建一个token
服务器端的token还是很重要的,最重要的是里面有一个时间戳,当客户端将serKoken提交过来的时候,可以用时间限制,serToken的有效时间,如果不在时间限制内,或与上次的ip不同,或与上次的设备信息不同,那么就认为,url非法。
token可靠的前提是:
1)app端不被反编译,攻击者不知道你的构造clientToken的方法;
2)服务器端serToken生成复杂,算法不被猜出,验证足以严格,限制攻击者不能伪造出服务器端token,特别短时间失效原则,限制一般攻击者没时间猜出token
客户端构建一个token:
string serToken=GetServerToken(string ip ,string userName,string deviceInfo,string tag);--dedc080af089bccd7fbdf708e3c06898 //获取一个服务器端token
string clientParmMd5=Md5("name=test&Value=123"); --a95bc463f71a08ba40e64e52d23b9284 //对参数md5
string clientIp="103.16.127.226"; //客户端ip
string deviceInfo="xxxxxxxxxx";
string userName="curAppUserName"; //当前app用户
string startStr="as11as(";
string endstr=")end";
string clientStr=startStr+clientParmMd5+"|"+serToken+"|"+clientIp+"|"+deviceInfo+userName+endStr; //待加密的client字符串
string clientToken=GetClientToken(clientStr);
//发起请求
string url=xxxx.com?name=test&Value=123&token=clientToken
服务器端解析验证token
//解密客户端提交过来的token
分解为:"as11as(a95bc463f71a08ba40e64e52d23b9284|dedc080af089bccd7fbdf708e3c06898|103.16.127.226|xxxxxx|userName+endStr"
//解密服务器token
string serToken="dedc080af089bccd7fbdf708e3c06898";
string [] serTokenArr=DecrySerToken(serToken)
这里有一个验证服务器端token的策略,用来验证提供的服务器端token,是否还有效,如果无效直接停止后续判断操作。
//serToken验证通过,然后判断url中的参数是否被篡改,
string nowParMd5=Md5(Request.QueryString["name"]+Request.QueryString["Value"]);
string oleParMd5=clientParmMd5;
//判断如果被篡改,那么就返回提示信息,
注意收集客户端的信息,如果有恶意攻击,那么证据将会被保留。
如果你的app被反编译了,而且被攻击者知道了你构建token的方法,那么就只能被攻击了,报警解决吧。
服务器安装证书使用https或者ssl,再结合auth认证可以解决,app被别人调用的问题。
这个方案是有效的吗?
转载于:https://www.cnblogs.com/Tpf386/p/5768552.html
如何防止app接口被别人调用相关推荐
- java接口对接——别人调用我们接口获取数据
java接口对接--别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...
- 写接口给别人调用 推送数据到我们_我们写了一个超好用的抖音矩阵数据管理工具...
我最近跑了十来个抖音号,遇到一些问题,然后通过我们NB的程序员解决了.如果你也在做抖音矩阵,那这些问题你肯定也会遇到,所以我把解决问题的方法工具化了,给大家用.我遇到的最大的问题,就是账号数据的同步. ...
- java如何写接口给别人调用
在springboot中编写restful风格的API供其它的项目调用 1.导入依赖 pom.xml <dependencies><dependency><groupId ...
- android app通过Geth RPC接口实现远程调用
记录一下APP怎么通过以太坊的RPC接口实现远程调用.此过程的环境为Window7和Android studio2.2.3.以web3_clientVersion为例.更多用法参考Geth JSON- ...
- python如何实现别人调用自己的API
5_python如何实现别人调用自己的API(5-20181224) 参考别人的API接口的形式 参考别人的API接口的形式 https://docs.open.alipay.com/api_1/al ...
- PHP开发APP接口(二)
这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) [php] view plain copy print? <?php // http://app.com/list.ph ...
- php写简单接口_使用PHP如何编写简单的App接口
这篇文章主要介绍了使用PHP编写简单的App接口的一些个人的步骤以及经验总结,有需要的小伙伴可以参考下 本篇是笔记尝试写的第一个PHP接口,并在iOS开发中尝试应用测试.今天给大家分享如何自己写接口来 ...
- 在php中调用java接口吗,php 调用 java 接口
php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...
- php 面向接口,php开发app接口
一.app接口简介:与PHP面向对象的接口不同,是通信接口地址 1.条件: 1)接口地址 2)接口文件 3)接口数据 2.如何通信 1)类似BS模式 3.客户端app通信格式区别:xml和json 1 ...
最新文章
- 【自然框架】之通用权限(四):角色表组
- Cisco网络防火墙配置方法
- 如何对ASP.NET进行性能优化
- Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释
- Membership Leakage in Label-Only Exposures论文解读
- maven指定配置文件
- ajax调用网易云APi遇到跨域问题
- 维修经验:播放器没有声音,但系统有声音
- jpg图片怎么转jpeg格式?赶快进来学习下新操作
- hp服务器装2012系统还原,用HP GEN8+WIN2012+Hyper V+黑群晖5.2组建家庭NAS中心 篇四:WIN 2012 安装 存储池调试及修复...
- adb 文件传输,解决只读文件系统Read-only file system问题
- css3探测光圈_CSS3按钮鼠标悬浮实现光圈效果
- mysql uid怎么获取_新浪微博API如何获取uid,并根据uid获取用户的基本信息
- IntelliJ IDEA / Eclipse 自动生成 Author 注释 签名
- 移动固态硬盘删除分区(包括EFI分区)
- 手机网站支付宝接入iframe无法唤醒支付宝app
- 旅游网站大数据分析 - 数据清洗
- 职场上,这些不为人知的潜规则,你知道吗?
- Git、Gitee简单操作
- 一个加班多新人多团队,我们的代码问题与重构
热门文章
- 汇编语言(第2版)2011040201
- 百炼成钢!自己动手写一个深度学习框架!
- PyTorch一年增长194%,超越TensorFlow指日可待
- 收藏 | TinaFace:人脸检测新纪录
- C++ Primer 第五版 第6章 6.7——函数指针阅读笔记
- 设置单元格填充方式_【WPS神技能】Excel表格中单元格内的双色填充效果有点意思!...
- 推荐系统遇上深度学习(四)--多值离散特征的embedding解决方案
- 理解Hinton的Capsule Networks1
- 水土保持功能评估中k值的计算公式
- linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国