5.4.2 通过 HTTPS 的通信 规则书

原书:Android Application Secure Design/Secure Coding Guidebook

译者:飞龙

协议:CC BY-NC-SA 4.0

使用 HTTP/S 通信时,遵循以下规则:

5.4.2.1 必须通过 HTTPS 通信发送/接收敏感信息(必需)

在 HTTP 事务中,发送和接收的信息可能被嗅探或篡改,并且连接的服务器可能被伪装。 敏感信息必须通过 HTTPS 通信发送/接收。

5.4.2.2 必须小心和安全地处理通过 HTTP 接收到的数据(必需)

HTTP 通信中收到的数据可能由攻击者利用应用的漏洞产生。 因此,你必须假定应用收到任何值和格式的数据,然后小心实现数据处理来处理收到的数据,以免造成任何漏洞。此外,你不应该盲目信任来自 HTTPS 服务器的数据。 由于 HTTPS 服务器可能由攻击者制作,或者收到的数据可能在 HTTPS 服务器的其他位置制作。 请参阅“3.2 小心和安全地处理输入数据”。

5.4.2.3 SSLException必须适当处理,例如通知用户(必需)

在 HTTPS 通信中,当服务器证书无效或通信处于中间人攻击下时,SSLException会作为验证错误产生。 所以你必须为SSLException实现适当的异常处理。 通知用户通信失败,记录故障等,可被认为是异常处理的典型实现。 另一方面,在某些情况下可能不需要特别通知用户。 因为如何处理SSLException取决于应用规范和特性,你需要首先考虑彻底后再确定它。

如上所述,当SSLException产生时,应用可能受到中间人的攻击,所以它不能实现为,试图通过例如 HTTP 的非安全协议再次发送/接收敏感信息。

5.4.2.4 不要创建自定义的TrustManager(必需)

仅仅更改用于验证服务器证书的KeyStore,就足以通过 HTTPS ,与例如自签名证书的私有证书进行通信。 但是,正如在“5.4.3.3 禁用证书验证的危险代码”中所解释的那样,在因特网上有很多危险的TrustManager实现,与用于这种目的的示例代码一样。 通过引用这些示例代码而实现的应用可能有此漏洞。

当你需要通过 HTTPS 与私有证书进行通信时,请参阅“5.4.1.3 通过 HTTPS 与私有证书进行通信”中的安全示例代码。

当然,自定义的TrustManager可以安全地实现,但需要足够的加密处理和加密通信知识,以免执行存在漏洞的代码。 所以这个规则应为(必需)。

安卓应用安全指南 5.4.2 通过 HTTPS 的通信 规则书相关推荐

  1. 安卓应用安全指南 5.4.1 通过 HTTPS 的通信 示例代码

    5.4.1 通过 HTTPS 的通信 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY- ...

  2. 安卓应用安全指南 5.2.2 权限和保护级别 规则书

    5.2.2 权限和保护级别 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA ...

  3. 安卓应用安全指南 4.2.2 创建/使用广播接收器 规则书

    4.2.2 创建/使用广播接收器 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC- ...

  4. 安卓应用安全指南 5.4.3 通过 HTTPS 的通信 高级话题

    5.4.3 通过 HTTPS 的通信 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY- ...

  5. 安卓应用安全指南 4.6.3 处理文件 高级话题

    安卓应用安全指南 4.6.3 处理文件 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY ...

  6. 安卓应用安全指南 4.6.1 处理文件 示例代码

    安卓应用安全指南 4.6.1 处理文件 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY ...

  7. 安卓应用安全指南 4.5.1 使用 SQLite 示例代码

    安卓应用安全指南 4.5.1 使用 SQLite 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议: ...

  8. 安卓应用安全指南 4.4.3 创建/使用服务高级话题

    安卓应用安全指南 4.4.3 创建/使用服务高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC ...

  9. 安卓应用安全指南 4.6.2 处理文件 规则书

    安卓应用安全指南 4.6.2 处理文件 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY- ...

最新文章

  1. CentOS中用top命令CPU负载
  2. 18条交互设计和心理学之间的奇妙联系
  3. PHP学习01:引入表格解析并发送给网页
  4. ORA-07445 [kxsxsi()+450] [SIGSEGV]
  5. VForum 2008系列之三:分论坛视频-实现自动化的虚拟数据中心
  6. mysql主从配置 windows_windows实现mysql主从配置
  7. JAVAEE框架之Spring JdbcTemplate
  8. Linux下fdisk命令操作磁盘详解--添加、删除、转换分区
  9. ACM_逆序数(归并排序)
  10. linux mysql revoke_Linux环境下MySQL基础命令(4)----数据库的用户授权
  11. 发现孩子做作业用计算机,儿童不宜长期使用计算器做作业
  12. React 使用图片验证码组件(登录验证)
  13. TensorFlow 学习可视化 TensorBoard 简易教程
  14. Java+Swing+mysql实现学生选课管理系统
  15. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.8
  16. 李南江的前端课程知识点(三)HTML标签的学习
  17. matlab生成轨道不平顺谱程序,用于轨道不平顺复现试验的驱动试验谱生成方法
  18. 美国日本如何推动中小企业信息化
  19. Java(老白再次入门) - 异常处理
  20. buddypress主题_适用于WordPress网站的20个最佳BuddyPress主题

热门文章

  1. (04)System Verilog 利用函数通用总线激励驱动方法
  2. FPGA同步复位与异步复位深度理解
  3. java 熔断_熔断理解 - THISISPAN - 博客园
  4. 6002.mavlink通过xml生成自定义消息
  5. 【CCS】CCS全局搜索
  6. 快速修改数组的某个值_我用Python,3分钟快速实现,9种经典排序算法的可视化...
  7. eth_type_trans的处理流程图
  8. va_list函数族应用
  9. 嵌入式Linux系统编程学习之三十一线程的属性
  10. java混淆of_java – 是否有任何级别的混淆可以“欺骗”instanceof?