1
CDuXZMAPgHp1q9ew 2018-08-14 19:52:40 +08:00
中间人攻击, 客户端校验证书可破
|
2
MrMario 2018-08-14 20:03:33 +08:00
证书校验:
客户端预置服务端证书(其实只要一个哈希就可以了) 客户端网络库或者其他基础组件上,加上这个哈希校验,拒绝哈希不一致的请求 注意证书更换升级等(可以考虑多买几张证书) |
3
snail1988 2018-08-14 20:30:08 +08:00
什么目的 防止 用户抓包?还是防止中间第三人抓包
中间人 搜索一个概念 ssl-pinning 防用户没有什么可行手段 |
4
kwest 2018-08-14 21:27:30 +08:00
用 HTTPS 却不去校验证书就是耍流氓。
|
5
junbaor 2018-08-15 10:14:39 +08:00
双向认证了解一下
|
6
stephenliubp OP @snail1988 对,防止抓包,但是我写了 ssl-pinning 的代码测试过还是可以抓包的。
``` Objective-c + (AFSecurityPolicy*)customSecurityPolicy { NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https12" ofType:@"cer"]; NSData *certData = [NSData dataWithContentsOfFile:cerPath]; AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; securityPolicy.allowInvalidCertificates = NO; securityPolicy.validatesDomainName = YES; securityPolicy.pinnedCertificates = @[certData]; return securityPolicy; } + (void)postUploadWithUrl:(NSString *)urlStr para:(NSDictionary *)para name:(NSString *)name fileData:(NSData *)fileData fileName:(NSString *)fileName fileType:(NSString *)fileType success:(void (^)(id responseObject))success fail:(void (^)(void))fail { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.securityPolicy = [AFNetPackage customSecurityPolicy]; [manager POST:urlStr parameters:para constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { [formData appendPartWithFileData:fileData name:name fileName:fileName mimeType:fileType]; } success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { if (success) { success(responseObject); } } failure:^(NSURLSessionDataTask * _Nonnull task, NSError * _Nonnull error) { if (fail) { fail(); } }]; } ``` |
7
stephenliubp OP 数据安全方面给个推荐:Web 端: https://github.com/FantasticLBP/Anti-WebSpider。App 端:ssl 证书双向认证防止 抓包工具抓包;数据 RSA 加密;接口防重放
|
8
AwayEM 2018-08-25 22:49:22 +08:00
双向认证用越狱机也是有办法看到内容的...
|
9
stephenliubp OP @AwayEM 数据 RSA 加密了
|
10
Daniate 2018-08-26 20:40:55 +08:00
试试把 NSURLSessionConfiguration 的 connectionProxyDictionary 属性设置成 @{}
|
11
stephenliubp OP @Daniate 嗯,早期用这个,后来换成“ ssl 证书双向认证;数据 RSA 加密;接口防重放“。
|