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接口被别人调用相关推荐

  1. java接口对接——别人调用我们接口获取数据

    java接口对接--别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  2. 写接口给别人调用 推送数据到我们_我们写了一个超好用的抖音矩阵数据管理工具...

    我最近跑了十来个抖音号,遇到一些问题,然后通过我们NB的程序员解决了.如果你也在做抖音矩阵,那这些问题你肯定也会遇到,所以我把解决问题的方法工具化了,给大家用.我遇到的最大的问题,就是账号数据的同步. ...

  3. java如何写接口给别人调用

    在springboot中编写restful风格的API供其它的项目调用 1.导入依赖 pom.xml <dependencies><dependency><groupId ...

  4. android app通过Geth RPC接口实现远程调用

    记录一下APP怎么通过以太坊的RPC接口实现远程调用.此过程的环境为Window7和Android studio2.2.3.以web3_clientVersion为例.更多用法参考Geth JSON- ...

  5. python如何实现别人调用自己的API

    5_python如何实现别人调用自己的API(5-20181224) 参考别人的API接口的形式 参考别人的API接口的形式 https://docs.open.alipay.com/api_1/al ...

  6. PHP开发APP接口(二)

    这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) [php] view plain copy  print? <?php // http://app.com/list.ph ...

  7. php写简单接口_使用PHP如何编写简单的App接口

    这篇文章主要介绍了使用PHP编写简单的App接口的一些个人的步骤以及经验总结,有需要的小伙伴可以参考下 本篇是笔记尝试写的第一个PHP接口,并在iOS开发中尝试应用测试.今天给大家分享如何自己写接口来 ...

  8. 在php中调用java接口吗,php 调用 java 接口

    php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...

  9. php 面向接口,php开发app接口

    一.app接口简介:与PHP面向对象的接口不同,是通信接口地址 1.条件: 1)接口地址 2)接口文件 3)接口数据 2.如何通信 1)类似BS模式 3.客户端app通信格式区别:xml和json 1 ...

最新文章

  1. 【自然框架】之通用权限(四):角色表组
  2. Cisco网络防火墙配置方法
  3. 如何对ASP.NET进行性能优化
  4. Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释
  5. Membership Leakage in Label-Only Exposures论文解读
  6. maven指定配置文件
  7. ajax调用网易云APi遇到跨域问题
  8. 维修经验:播放器没有声音,但系统有声音
  9. jpg图片怎么转jpeg格式?赶快进来学习下新操作
  10. hp服务器装2012系统还原,用HP GEN8+WIN2012+Hyper V+黑群晖5.2组建家庭NAS中心 篇四:WIN 2012 安装 存储池调试及修复...
  11. adb 文件传输,解决只读文件系统Read-only file system问题
  12. css3探测光圈_CSS3按钮鼠标悬浮实现光圈效果
  13. mysql uid怎么获取_新浪微博API如何获取uid,并根据uid获取用户的基本信息
  14. IntelliJ IDEA / Eclipse 自动生成 Author 注释 签名
  15. 移动固态硬盘删除分区(包括EFI分区)
  16. 手机网站支付宝接入iframe无法唤醒支付宝app
  17. 旅游网站大数据分析 - 数据清洗
  18. 职场上,这些不为人知的潜规则,你知道吗?
  19. Git、Gitee简单操作
  20. 一个加班多新人多团队,我们的代码问题与重构

热门文章

  1. 汇编语言(第2版)2011040201
  2. 百炼成钢!自己动手写一个深度学习框架!
  3. PyTorch一年增长194%,超越TensorFlow指日可待
  4. 收藏 | TinaFace:人脸检测新纪录
  5. C++ Primer 第五版 第6章 6.7——函数指针阅读笔记
  6. 设置单元格填充方式_【WPS神技能】Excel表格中单元格内的双色填充效果有点意思!...
  7. 推荐系统遇上深度学习(四)--多值离散特征的embedding解决方案
  8. 理解Hinton的Capsule Networks1
  9. 水土保持功能评估中k值的计算公式
  10. linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国