app的安全性设计策略

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: app的安全性设计策略

软件安全(Software Security)就是使软件在收到恶意攻击的情形下依然能够继续正确运行及确保软件被在授权范围内合法使用的思想。

2017年5月13日,安全极客在无需物理接触、无需拆解门锁的情况下秒破智能门锁,获得所有的开锁密码,这是来自2017国际安全极客大赛GeekPwn香港站上出现的一幕。而被破解产品正是已广泛应用于自如、小猪、途家等B端市场的“果加互联网智能锁wifi公寓版”。

网络分:主动(篡改消息, 伪造,拒绝服务,回放)和被动(流量分析, 窃听)。

软件系统通常是登录成功后才能访问核心资源,控制好登录就大大提高了软件安全性。用户通过监听应用向服务器发送的请求,用工具伪造消息来攻击服务器来骗取资源,也可能通过破解手机,直接读取应用的本地文件窃取用户信息。

密码要用md5保存编码,发送时也用md5编码后的密码。md5是单向加密,相同的字符串经过md5加密得到的字符串相同,并且编码后的字符串可以当网络请求字符串,不错在非法网络字符。机密数据(如:用户名和密码)不要用普通文件读写(NSFileManager等)方法记录机密数据,用NSUserDefaults存储。

NSUserDefaults userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults setObject:value forKey:key];

[[NSUserDefaults standardUserDefaults] synchronize];

不同的请求发送到不同的url,这样就增加了服务的并发处理能力。

借鉴联通VAC(增值业务平台)的AAA接口定义的消息结构,发送消息的消息有命令字cmdCode,可以便于消息的跟踪,visitTime为发送消息时的时间,key=softkey1+cmdCode+time(long)进行md5加密后混淆,phoneId为通过needPhoneIdPhone.htm从服务器获取到的字符串。softkey1为约定字符串,如:dmko%^7*(0dfsd。该消息接口能保证安全的向服务器发送请求,并得到服务合法性校验。

2015-06-23 17:59:59:943 FHL[336:807] API.m:-[API requestWithMethod:URLString:parameters:error:]:197 Debug:request paramters:{

cmdCode = 0005;

key = 24CD74EFF781C86EB2219C0BA0A5E32B;

phoneId = “ios_120e438f-9757-451d-b980-0d87824b02eb”;

pushPhoneParam = “token:9ee99652 0c1955ac be0cb7a3 afceeec9 df156e10 b7153641 bd5946f3 e7f39e7a”;

visitTime = 1435053599;

}

request url:http://test.c.cn/b/phone/a/d.htm?cmdCode=0005&key=24CD74EFF781C86EB2219C0BA0A5E32B&phoneId=ios_120e438f-9757-451d-b980-0d87824b02eb&pushPhoneParam=token%3A9ee99652 0c1955ac be0cb7a3 afceeec9 df156e10 b7153641 bd5946f3 e7f39e7a&visitTime=1435053599


imei获得方式:[[UIDevice currentDevice] identifierForVendor]

phoneId通过needPhoneIdPhone.htm从服务器获取到的字符串,其中的phoneId为默认字符串,服务器会返回正确的phoneId。

2015-06-23 18:26:54:490 FHL[362:807] API.m:-[API requestWithMethod:URLString:parameters:error:]:197 Debug:request paramters:{

cmdCode = 0000;

imei = “A196D974-4545-562EEE0A794F”;

key = 9997EF3481E78796DFED17887335EBCC;

phoneId = “ios_44545er”;

visitTime = 1435055214;

}

响应消息的key为:key= softkey2+cmdCode+time(long)进行md5加密后混淆。softkey2为约定字符串,如:drrr^7*dfsdf。消息头字段固定:cmdCode,innerMessage(提示语),result,resultKyey(服务器合法校验key),visitTime。消息体为响应结果,可能为空集。

2015-06-23 18:41:25:131 FHL[362:807] API.m:__46-[API

httpRequestWithRequest:success:failure:]_block_invoke:431 Debug:responseObject:{
body = {
canMyCourierRank = 1;
canNotMyCourierRankMessage = “”;
cityCode = 110100;
cityName = “\U5317\U4eac\U5e02”;
countyCode = 110101;
countyName = “\U4e1c\U57ce\U533a”;
courierCode = 2125873;
courierName = “\U674e\U96f6\U56db”;
courierRank = 1;
courierRankName = “\U4e00\U7ea7\U5148\U950b\U5b98”;
courierRankUrl = “http://test.zuixiandao.cn/fhl/statics/css/images/dispatchCourierRank1_small.png”;
courierType = 2;
deliveryExperience = 1;
downloadUrl = “”;
grabCityCode = 330100;
grabCityName = “\U676d\U5dde\U5e02”;
grabProvinceCode = 330000;
grabProvinceName = “\U6d59\U6c5f\U7701”;
handoverWarnCount = 5;
handoverWarnInterval = 2;
handoverWarnStart = 5;
hasNewVersion = 0;
headPortraitUrl = 432t1426737315000;
idNumber = 211481198401154411;
idPic1Url = 432t1426737315000;
idPic2Url = 432t1426737315000;
needUpgrade = 0;
provinceCode = 110000;
provinceName = “\U5317\U4eac”;
rankChangeContent = “”;
rankChangeTitle = “”;
reason = “”;
receivingWarnCount = 5;
receivingWarnInterval = 3;
receivingWarnStart = 10;
shareUrl = “http://t.cn/RAPoRa5”;
statusId = 3;
telCode = 0571;
vehicle = 2;
};
head = {
cmdCode = 1001;
innerMessage = “”;
message = “\U7cfb\U7edf\U7e41\U5fd9\Uff0c\U8bf7\U7a0d\U540e”;
result = 1;
resultKey = DD4552;
visitTime = 1435056084;
};
}

服务器:收到消息根据约定字符串和参数产生key,比较计算的key和发送请求的key是否一致,若不一致判定为伪造消息。拿系统的当前时间和请求的visitTime比较看是否超过180秒,若超过消息返回失败(防止伪造消息)。

客户端:

收到响应消息根据约定字符串和参数产生key,比较计算的key和响应的key是否一致,若不一致判定为伪造消息。拿系统的当前时间和响应消息的visitTime比较看是否超过180秒,若超过消息返回失败(防止伪造消息)。

目录
相关文章
|
21天前
|
移动开发 小程序 JavaScript
uni-app多端应用开发:常见跨端兼容问题及处理策略
uni-app多端应用开发:常见跨端兼容问题及处理策略
27 0
|
1月前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
51 0
|
3月前
|
存储 XML Linux
深入理解操作系统:进程管理与调度策略探索安卓应用开发:从零开始构建你的第一个App
【8月更文挑战第28天】在数字世界里航行,操作系统是掌控一切的舵手。本文将带你领略操作系统的精妙设计,特别是进程管理和调度策略这两大核心领域。我们将从基础概念出发,逐步深入到复杂的实现机制,最后通过实际代码示例,揭示操作系统如何高效协调资源,确保多任务顺畅运行的秘密。准备好了吗?让我们启航,探索那些隐藏在日常电脑使用背后的奥秘。 【8月更文挑战第28天】在这个数字时代,拥有一款自己的移动应用程序不仅是技术的展示,也是实现创意和解决问题的一种方式。本文将引导初学者了解安卓开发的基础知识,通过一个简单的待办事项列表App项目,逐步介绍如何利用安卓开发工具和语言来创建、测试并发布一个基本的安卓应用
|
4月前
|
安全 Java 数据库
如何设计返利App的用户权限与访问控制策略
如何设计返利App的用户权限与访问控制策略
|
4月前
|
存储 监控 安全
数据安全与隐私保护在返利App中的实施策略
数据安全与隐私保护在返利App中的实施策略
|
6月前
|
缓存 安全 Java
提高APP安全性的必备加固手段——深度解析代码混淆技术
提高APP安全性的必备加固手段——深度解析代码混淆技术
87 1
|
网络协议 安全 数据安全/隐私保护
直播app源码,QUIC协议:改善性能与安全性
由于QUIC协议作为一个多种协议集成的一项新型协议创新,被应用到直播app源码平台中,能帮助平台提高性能与安全性,提供给用户更可靠、更优质的直播体验。
直播app源码,QUIC协议:改善性能与安全性
|
存储 安全 网络安全
iOS常规知识点:如何确保APP的安全性
iOS常规知识点:如何确保APP的安全性
163 0
|
JSON 机器人 API
自动交易机器人做市策略APP量化交易模式开发
def __init__(self, api_url, api_key): self.api_url = api_url self.api_key = api_key def place_order(self, symbol, amount, price):
|
存储 安全 小程序
电商在做独立系统或者APP的时候如何确保其安全性
在网络高度发展的今天,信息安全是人们关心的永恒话题。保证信息的安全,包括各个方面,不单单指消费客户信息,还包括产品信息,系统收付款等等。总的来说,保证整个系统,重要API的参数安全是非常之重要的!