如何防止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接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...
随机推荐
- Delphi开发Android的几个注意
Delphi在Android开发中还不是很完善,也有一些修改,需要注意: 1.不要用IXMLDocument的SaveToStream, XML.Text等,用了OXML,QXML,VerySimpl ...
- redis学习指南
一.redis安装 # 安装最新版 yum install -y epel-release vim atop htop net-tools git wget gcc-c++ yum clean all ...
- OpenWrt-Git依赖报错
前言 在Ubuntu中搭建openwrt编译环境时,安装完了需要的软件之后,我们执行命令检查依赖是否满足, make defconfig 有时会出现以下警告: ihid@ubuntu:~/chaos_ ...
- ruby 生成随机字符串
rand(36 ** n).to_s(36) n 等于任意数字
- 【树形DP】洛谷1122_最大子树和
又是一道树形DP的入门题,思想非常简单 然而我最开始还是存了两个状态[传送门] 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上 ...
- 中国大学MOOC-JAVA学习(浙大翁恺)—— 信号报告
使用switch-case语句的练习 import java.util.Scanner; public class Main { public static void main(String[] ar ...
- C语言实现文件复制功能(包括文本文件和二进制文件)
文件的复制是常用的功能,要求写一段代码,让用户输入要复制的文件以及新建的文件,然后对文件进行复制.能够复制的文件包括文本文件和二进制文件,你可以复制1G的电影,也可以复制1Byte的txt文档. 实现 ...
- 教你解决Xshell用SSH连接ubuntu总掉线该
使用Xshell 5中的SSH连接ubuntu总是掉线,搞的自己束手无策,本集小编整理了一下原因及解决方法,现晒出来和大家分享一下,希望可以帮助大家. 1. Xshell客户端设置 将Keep Ali ...
- 20155231 实验四 Android程序设计
20155231 实验四 Android程序设计 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事 ...
- 20155316 2016-2017-2 《Java程序设计》第9周学习总结
教材学习内容总结 课堂学习内容 不要上帝类,设计小类 soild设计 开放封闭原则:对扩充开放,对修改封闭 OOD方案 DIP 基耦合 教材学习内容 JDBC架构 交易与隔离层级 RowSet .cl ...