作为一个移动互联网App,天生是需要和服务器通信的。那么,服务器如何识别客户端的身份?我们如何保证数据传输过程中的安全性?要靠两个东西:使用AppKey做身份识别,使用AppSecret校验数据。
这两个东西的定义可以参考淘宝开放平台上这种比较严肃的说法:
AppKey
客户端调用API时的唯一标识,服务器通过App Key来鉴别应用的身份。调用API接口时必须传入的参数。
App Secret
App Secret是服务端给客户端分配的密钥,用来保证应用来源的可靠性,防止请求数据被伪造。
其中,AppKey用来标识客户端的身份,通常保密性没有什么要求。就好比别人知道了我们的名字并不能假冒我们的身份一样。但AppSecret就不一样了。
先说一下App Secret的使用流程。
一个App请求中,通常包含AppKey、业务数据、时间戳等等。我们把这些信息定义为A、B、C。我们要把A、B、C这些信息发往服务器肯定不能直接扔过去,那么毫无安全性可言。通常的做法是把A、B、C和AppSecret(D)一起需要做一个校验,生成一个校验码(sign client),把校验码和A、B、C一起发送给服务器,服务器收到信息后,根据客户端发来的AppKey从数据库中检索对应的AppSecret,然后也同样把A、B、C和AppSecret(D)一起做一个校验,生成一个校验码(sign server)。如果sign client和sign server相同,就证明数据在传输过程中没有被修改过。
可以看出,整个过程中D(AppSecret)和校验过程是旁观者无法得知的。但是校验过程无非就那么几种算法,很好破解。所以说,AppSecret的保密工作就很重要了。
怎么做好AppSecret的保密工作呢?
写在代码里?Java很好编译呢。
做为资源文件?更二。
去服务器请求?请求过程会被劫持噢。
目前,最简单有效的办法还是打到.so库中。
- 浏览: 146281 次
- 性别:
- 来自: 广州
最新评论
-
lvliang169:
码农通常会被亲戚、家人、朋友认为是修电脑的
深有同感啊、、、、 ...
关于程序猿,你不知道的15件事
相关推荐
客户端通常指的是用户直接接触的应用程序,如浏览器、手机APP或桌面应用,其职责是接收用户的输入,展示数据,并与服务端进行通信。服务端则提供API接口,接收客户端的请求,执行相应的业务逻辑,访问数据库,处理...
本开源项目“商城app客户端+服务器端.zip”提供了完整的Android商城项目的源代码,旨在帮助开发者进行二次开发,进一步理解和实践客户端与服务器端的交互逻辑。下面将详细阐述该项目中的关键知识点。 首先,我们...
总的来说,这个Android商城项目不仅锻炼了开发者在客户端UI设计和服务器端接口设计的能力,也涵盖了数据库管理、网络通信、安全策略等多个方面,是学习和提升Android全栈开发技能的理想实践。通过深入分析和实现这样...
同时,本研究还提出了一个系统的安全风险分析方法,包括客户端、通信过程和服务端三个方面的安全风险分析,帮助高校师生更好地规避移动校园App的安全风险。 本研究为移动校园App的安全风险分析和对策研究提供了一个...
【描述】"完整的电商app加服务端"意味着这个项目包含了移动应用前端(客户端)和服务器端(服务端)的所有源代码,允许开发者深入理解整个系统的工作原理,并可以根据需求进行定制和扩展。这通常涉及用户登录注册、...
支付宝支付-APP支付服务端代码是为实现移动应用与支付宝接口交互的重要组成部分,主要用于处理客户端发起的支付请求,确保交易安全、顺畅。本代码适用于使用Visual Studio 2010及更高版本,并要求.NET Framework 3.5...
这些客户端应用通过HTTP或HTTPS协议与服务端通信,发送用户的请求并接收服务器返回的数据。 服务端则是整个系统的心脏,负责处理来自客户端的各种请求,如搜索商品、下单、支付等。服务端架构通常采用微服务架构,...
总结,基于Android的大学生家教APP设计与实现是一个综合性的项目,涵盖了Android客户端开发、服务端开发以及数据库设计等多个技术领域。通过这个项目,开发者不仅能提升自己的技术能力,还能理解到一款完整的移动...
购物商城App是一款集成了客户端、服务端和数据库的综合性电子商务应用程序。它提供了用户登录注册、商品浏览、购买等一系列基础功能,旨在为用户提供便捷的在线购物体验。以下将详细阐述其中涉及的技术点和流程。 ...
在本案例的"Socket通信实现客户端-服务端通信"文件中,可能包含了以下内容: 1. Android端的Socket客户端实现,包括连接服务器、发送数据、接收数据和断开连接的代码示例。 2. Java服务端的Socket服务器实现,包括...
在标题"国内知名IM通信开源包含安卓IOSapp源码服务端源码PC端源码"中,我们可以理解到这是一个公开源代码的即时通讯解决方案,涵盖了移动设备(Android、iOS)以及桌面平台(PC)。这通常意味着开发者可以获得完整的...
在移动互联网时代,开发一款功能完备、用户体验优秀的商城APP是电商企业的重要任务。本资源提供的是黑马训练营红孩子商城的客户端和服务端完整源码,这对于学习Android应用开发、电商系统架构以及实践项目经验的...
- WCF服务端和客户端都可以捕获并处理通信异常,如`CommunicationException`和`TimeoutException`。 - 应使用适当的错误处理机制,如 faults 或者自定义异常。 **调试与诊断**: - 使用WCF诊断工具如消息日志、跟踪...
在这个云笔记App中,开发者可能使用了SQLite作为本地数据库来存储用户的笔记,同时通过网络接口(API)与服务端进行通信,实现数据的同步。 服务端的开发则可能使用IntelliJ IDEA,这是一个通用的Java开发环境,...
本资源提供的"ios移动社交app的客户端+webservice服务器端源码"正是一个完整的解决方案,涵盖了用户交互、数据交换以及服务端处理的核心部分。下面我们将深入探讨其中涉及的关键知识点。 1. **iOS客户端开发**: ...
总的来说,《Android应用源码:基于安卓的校园二手交易系统客户端+服务端+数据库》是一个综合性的项目,它涵盖了移动应用开发的多个层面,对于学习Android开发、后端开发和数据库管理的开发者来说,是宝贵的实践资源...
在Android平台上,利用Socket API中的DatagramSocket类和DatagramPacket类,我们可以实现基于UDP的客户端和服务端通信。 1. **UDP基本原理**: UDP不提供连接建立和释放,也不保证数据包的顺序和可靠性。每个...
在IT领域,构建Android客户端与PC服务端程序的交互是常见的任务,这涉及到移动设备与桌面系统的通信,以便实现数据的共享和交换。本项目主要关注Android应用如何连接到PC上的服务端,通过访问数据库(如MySQL和...
此外,客户端会与服务端进行通信,通过HttpURLConnection或者更高级的网络库如Retrofit、OkHttp实现网络请求。为了优化用户体验,可能还涉及到了异步任务、线程管理以及数据缓存策略。 数据库部分,"communitymsgdb...
在IT行业中,客户端和服务端交互是应用程序开发的核心部分,特别是在移动应用开发中,如安卓(Android)客户端与服务器之间的通信。本源代码包提供了一个完整的示例,涵盖了从安卓客户端到服务端,以及从服务端返回...