如何防止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被别人调用的问题。
这个方案是有效的吗?
如何防止app接口被别人调用的更多相关文章
- java接口对接——别人调用我们接口获取数据
java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...
- 根据URL获取参数值得出json结果集,对外给一个接口让别人调用
背景:测试接口的时候,经常都是后端get\post请求直接返回json结果集,很想知道实现方式,虽然心中也大概了解如何实现,但还不如自己来一遍踏实! 先来看一下结果吧: 以下对一个web的get接口进 ...
- java如何写接口给别人调用
参考:https://blog.csdn.net/greatkendy123/article/details/52818466 java web开发(二) 接口开发
- 《PHP开发APP接口》笔记
PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...
- 【转】基于laravel制作APP接口(API)
这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件 ...
- 关于PHP写APP接口的安全问题探讨(一)
在探讨这个问题之前,先要确认一点的是,作为一名互联网Coder,无论你是前端或者后端你都要对http请求要有一定的了解,知道http特性,要清楚的了解http里面的Request与Response是什 ...
- PHP开发APP接口(二)
这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 requ ...
- 如何用php写app接口[原创]
人生就如一列永不停止的列车,no one knows when or where to stop.总有那些美好,值得永远怀念.也总有那些希望,值得你无怨无悔的付出,追逐.去年年底带着女儿一起坐火车会湖 ...
- PHP开发APP接口学习笔记
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...
随机推荐
- python格式化输出、逻辑表达式和字符编码
格式化输出: %s 字符串占位符;%d 整数占位符 注意:如果前面有了占位符,那么后面所有的%都是占位,如果要输出“%”,需要使用转移符,即"%%" #定义三个变量 name = ...
- Java设计模式(24)——行为模式之解释器模式(Interpreter)
一.概述 概念 自己定义文法,实际中还是很少出现的,作了解 给出一篇网友的参考博文:http://blog.csdn.net/ylchou/article/details/7594135
- WPF MVVM从入门到精通3:数据绑定
原文:WPF MVVM从入门到精通3:数据绑定 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 WPF ...
- 关于web服务安全的一些思考
一.问题: 在开发web项目是时,安全问题有以下几种问题: (1)用户可以自己伪造一个URL请求来进行访问吗? (2)用户不在服务器登录,可以自己封装出用户名.密码进行访问吗? (3)url的参数可以 ...
- 【信息安全】MD5加密浅析
前段时间,网传京东泄露了几G的用户数据,后面又说用户数据是MD5加密的,让大家不要担心,改个密码之类云云. 出于好奇,上网了解了一下这个MD5. 一.MD5加密方式是什么 简单讲,MD5加密是一个用到 ...
- [并发并行]_[线程模型]_[Pthread线程使用模型之二 工作组work crew]
Pthread线程使用模型之二工作组(Work crew) 场景 1.一些耗时的任务,比如分析多个类型的数据, 是独立的任务, 并不像 pipeline那样有序的依赖关系, 这时候pipeline就显 ...
- Java——RMI
之前分布式系统调用用的是比较老的EJB,当时还是作为服务调用方,去调用别的系统的服务.最近发现新公司里面,用的是RMI,查了下发现EJB的底层实现就是RMI,也算是熟悉了... 一,使用JDK 中的R ...
- 【LG5017】[NOIP2018pj]摆渡车
[LG5017][NOIP2018pj]摆渡车 题面 洛谷 题解 震惊!普及组竟然考斜率优化??? 当然有其他的方法 首先我们转化一下模型 此题可以变为: 在一根时间轴上有一些点,每个时间点\(i\) ...
- SimpleDateFormat,Calendar 线程非安全的问题
SimpleDateFormat是Java中非常常见的一个类,用来解析和格式化日期字符串.但是SimpleDateFormat在多线程的环境并不是安全的,这个是很容易犯错的部分,接下来讲一下这个问题出 ...
- 查询系统日期和时间(mysql)
select current_date --不带时间select sysdate() 或 SELECT NOW(); --带时间