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接口被别人调用的更多相关文章

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

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

  2. 根据URL获取参数值得出json结果集,对外给一个接口让别人调用

    背景:测试接口的时候,经常都是后端get\post请求直接返回json结果集,很想知道实现方式,虽然心中也大概了解如何实现,但还不如自己来一遍踏实! 先来看一下结果吧: 以下对一个web的get接口进 ...

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

    参考:https://blog.csdn.net/greatkendy123/article/details/52818466 java web开发(二) 接口开发

  4. 《PHP开发APP接口》笔记

    PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...

  5. 【转】基于laravel制作APP接口(API)

    这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件 ...

  6. 关于PHP写APP接口的安全问题探讨(一)

    在探讨这个问题之前,先要确认一点的是,作为一名互联网Coder,无论你是前端或者后端你都要对http请求要有一定的了解,知道http特性,要清楚的了解http里面的Request与Response是什 ...

  7. PHP开发APP接口(二)

    这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 requ ...

  8. 如何用php写app接口[原创]

    人生就如一列永不停止的列车,no one knows when or where to stop.总有那些美好,值得永远怀念.也总有那些希望,值得你无怨无悔的付出,追逐.去年年底带着女儿一起坐火车会湖 ...

  9. PHP开发APP接口学习笔记

    习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...

随机推荐

  1. Delphi开发Android的几个注意

    Delphi在Android开发中还不是很完善,也有一些修改,需要注意: 1.不要用IXMLDocument的SaveToStream, XML.Text等,用了OXML,QXML,VerySimpl ...

  2. redis学习指南

    一.redis安装 # 安装最新版 yum install -y epel-release vim atop htop net-tools git wget gcc-c++ yum clean all ...

  3. OpenWrt-Git依赖报错

    前言 在Ubuntu中搭建openwrt编译环境时,安装完了需要的软件之后,我们执行命令检查依赖是否满足, make defconfig 有时会出现以下警告: ihid@ubuntu:~/chaos_ ...

  4. ruby 生成随机字符串

    rand(36 ** n).to_s(36) n 等于任意数字

  5. 【树形DP】洛谷1122_最大子树和

    又是一道树形DP的入门题,思想非常简单  然而我最开始还是存了两个状态[传送门] 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上 ...

  6. 中国大学MOOC-JAVA学习(浙大翁恺)—— 信号报告

    使用switch-case语句的练习 import java.util.Scanner; public class Main { public static void main(String[] ar ...

  7. C语言实现文件复制功能(包括文本文件和二进制文件)

    文件的复制是常用的功能,要求写一段代码,让用户输入要复制的文件以及新建的文件,然后对文件进行复制.能够复制的文件包括文本文件和二进制文件,你可以复制1G的电影,也可以复制1Byte的txt文档. 实现 ...

  8. 教你解决Xshell用SSH连接ubuntu总掉线该

    使用Xshell 5中的SSH连接ubuntu总是掉线,搞的自己束手无策,本集小编整理了一下原因及解决方法,现晒出来和大家分享一下,希望可以帮助大家. 1. Xshell客户端设置 将Keep Ali ...

  9. 20155231 实验四 Android程序设计

    20155231 实验四 Android程序设计 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事 ...

  10. 20155316 2016-2017-2 《Java程序设计》第9周学习总结

    教材学习内容总结 课堂学习内容 不要上帝类,设计小类 soild设计 开放封闭原则:对扩充开放,对修改封闭 OOD方案 DIP 基耦合 教材学习内容 JDBC架构 交易与隔离层级 RowSet .cl ...