单位 9 / 11

隐私、权限和安全使用

收益:

  • 能够使用最小权限原则,根据理由、上下文和拒绝场景请求权限
  • 能够存储使用Keychain/Keystore加密的敏感数据,应用数据最小化并控制人工智能添加过多权限的趋势
  • 能够将用户数据流向云或人工智能服务作为隐私决策进行管理,获得用户同意,并仅将安全技术用于授权、防御目的

该移动应用程序在用户最私密的设备上运行:它知道他的位置、联系人、照片、健康数据、麦克风。这种访问就是巨大的权力,而权力就意味着责任。隐私和安全并不是移动开发中的“附加功能”,而是从一开始就融入架构的原则;这就是所谓的隐私设计。而且,这不仅是一种道德选择,更是一项法律(KVKK、GDPR)和商店(App Store、Google Play)义务。在本单元中,我们将学习如何正确请求权限、安全处理数据、使用人工智能作为该领域的助手并保护自己免受其陷阱。在人工智能背景下还有一个额外的关键问题:将用户数据传输到人工智能模型(尤其是云端)本身就是一个隐私决策。

请求许可的艺术:最小特权

安全的基本原则是最小特权(不要求比工作需要更多的特权)。您的应用程序应该只在需要时请求它真正需要的权限。如果没有拍照功能,则不会请求拍照权限;如果仅在地图打开时需要位置,则“使用时”权限就足够了,而不是“始终”。过多的权限会带来三重危害:破坏用户信任、导致商店拒绝、放大数据泄露风险。

请求许可的适当时机和解释至关重要。根据上下文和理由请求用户许可,例如“需要相机访问权限才能扫描您的收据”。 iOS 需要 Info.plist 中的此描述;空洞或误导性的描述将被商店拒绝。

权限类型

坏方法

好方法

时机

启动时请求全部

使用该功能时有提示

适用范围

「永远的位置」

“使用时的位置”

描述

空白或通用

具体、具体的理由

拒绝状态

应用程序崩溃/崩溃

请提供替代方案

提示:当权限被拒绝时,您的应用程序应该能够继续运行。如果用户拒绝使用相机,请提供“手动登录”选项。强加“允许它,否则应用程序将无法运行”既是一种糟糕的体验,也是一个商店问题。在向 AI 打印权限代码时,请务必询问拒绝场景。

AI 的同意和隐私代码:注意事项

人工智能可以快速生成请求权限的代码,但它有两个典型的陷阱。首先,添加不必要的权限:位置、联系人可以批量添加存储权限“以防万一”。其次,跳过拒绝场景:只写状态“允许”并忽略拒绝。对于每个生成的许可证,您都会被问到“这真的有必要吗?”以及“如果被拒绝会怎样?”提出你的问题。

注意:AI生成的示例代码可能会未经加密地存储用户数据或不安全地传输用户数据。敏感数据(密码、健康、财务)应保存在设备上的安全存储中(Keychain — iOS、Keystore — Android;操作系统的加密保管库区域),并通过加密连接 (HTTPS/TLS) 在网络上传输。人工智能并不总是自发地做到这一点;问清楚并核实。

数据最小化并将数据发送给人工智能

您不收集的数据不会泄露。数据最小化(仅收集实际需要的数据)是保护隐私的最强大工具。在人工智能功能中,这一原则尤为重要:当将数据发送到云法学硕士或外部人工智能服务时,该数据不受您的控制。在将用户的健康记录、对话内容或个人信息发送到云端之前,请先问三个问题:(1)这些数据真的有必要吗? (2)能否在设备上处理? (3)如果要发送,用户是否知情并同意?明确告知用户他们的数据将用于人工智能服务,这既是法律也是道德要求。

安全使用和防御重点

从 IT 和安全角度发出的警告:本模块中学习的技术仅供授权和防御用途。测试自己的应用程序的安全性、保护用户数据和修复漏洞是合法的。未经许可对他人的应用程序进行逆向工程、未经同意收集用户数据或使用人工智能创建恶意软件都是非法且不道德的。当向人工智能寻求安全帮助时,请始终保持在保护自己系统的框架内。

三个迷你箱子

案例 1——拒绝超额休假。笔记应用程序在启动时使用人工智能生成的代码请求相机、麦克风、位置和联系人权限。 Google Play 拒绝了该发布,理由是“与功能无关的权限”。当团队只释放实际使用的存储权限时,释放就被批准了。教训:每一次额外的休假都是一种风险。

情况2——无密码存储。健康应用程序将用户测量结果存储在纯文本文件中,就像人工智能示例一样。安全审计发现,任何获得该设备的人都可以读取所有健康数据。数据通过密钥库/钥匙串移动到加密存储。教训:敏感数据始终保持加密状态。

案例 3 — 突然推送到云。一个应用程序将用户的日常笔记发送到云法学硕士进行总结,但它没有告诉用户。当媒体报道此事时,人们失去了信任和法律审查。该团队添加了明确的通知和确认,以及设备上的选项。教训:用户必须知道并确认数据将发送给人工智能。

弱提示/强提示

微弱提示:“请求位置权限。”

强力提示:“在 iOS/Swift 上以最小权限原则请求位置权限。 - 只有‘使用时’权限,而不是‘始终’ - Info.plist 描述:‘显示附近商店’ - 如果权限被拒绝:提供手动选择城市的选项,崩溃 - 如果权限之前被拒绝,重定向到设置 不要添加不必要的权限。也写下拒绝流程。”

可复制模板

请求权限的模板:“请求[平台]的[权限类型]权限。-最小范围(使用时/根据需要)-在上下文中,有合理的解释-在拒绝的情况下有礼貌的替代方案,永远不要崩溃-也提供Info.plist / Manifest条目不要添加额外的权限;证明每个权限的合理性。”

权限审核模板:“检查我的应用程序请求的权限:[权限列表+属性]。对于每个权限:是否真的需要?范围更窄是否足够?是否会导致商店拒绝?标记不必要。”

安全数据存储模板:“安全存储[平台]的敏感数据([类型]):-使用钥匙串/密钥库加密-不要在内存中保留不必要的长时间-不要泄漏到日志和备份中提供代码和验证步骤。”

发送数据到AI的模板:“我正在考虑将以下数据发送到云端AI服务:[数据]。评估:真的有必要吗?可以在设备上处理吗?如果发送,应该屏蔽哪些字段?应该如何获得用户同意?推荐隐私方面最安全的设计。”

常见错误

  • 请求超出必要的许可。信任、商店批准和安全的三重危险。
  • 在启动时批量请求权限。没有上下文的许可请求被拒绝;立即请求该功能。
  • 不写拒绝脚本。当权限被拒绝时应用程序崩溃既不好又被拒绝。
  • 无需密码即可存储敏感数据。健康、财务和密码必须保存在安全的存储中。
  • 在不通知用户的情况下将数据发送到云端/人工智能。违反法律和道德;需要通知和批准。
  • 未经授权使用安全技术。它仅对于您自己的系统上的防御目的是合法的。

综上所述

隐私和安全是从一开始就设计的,而不是后来添加的。基本原则是最小特权:仅在必要时以正当理由请求必要的许可,并在拒绝时提供礼貌的替代方案。敏感数据存储在加密存储中,并通过加密连接进行传输。数据最小化是最强大的保护:您不收集的数据不会泄漏。将数据发送到人工智能,尤其是发送到云端,本身就是一种隐私决策;其必要性受到质疑,如果可能的话,首选设备上的,通知用户并获得他/她的批准。生成的每个代码都会根据人工智能添加过多权限和不安全存储的倾向进行检查。安全技术仅用于授权和防御目的。

应用任务

列出应用程序(您自己的项目或虚构的)请求的权限列表,并让 AI 使用“权限审核模板”检查哪些权限是不必要的或过度的。细化或删除至少一项权限并编写该功能的拒绝场景。此外,如果您要将用户数据发送到云端,请使用“数据发送决策模板到 AI”确定最安全的设计,并编写用户批准文本。

清单

  • [ ] 我以最小权限原则请求每项许可。
  • [ ] 我在功能时请求上下文中的权限,而不是在启动时批量请求
  • [ ] 我为每个权限写了一个拒绝脚本,没有崩溃
  • [ ] 我存储了使用 Keychain/Keystore 加密的敏感数据
  • [ ] 我最大限度地减少了进入云端/人工智能的数据并增加了用户批准
  • [ ] 我仅在自己的系统上使用安全技术用于防御目的