APP安全机制(十一)—— 密码工具:提高用户安全性和体验(一)
版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.11.30 星期五 |
前言
在这个信息爆炸的年代,特别是一些敏感的行业,比如金融业和银行卡相关等等,这都对
app
的安全机制有更高的需求,很多大公司都有安全 部门,用于检测自己产品的安全性,但是及时是这样,安全问题仍然被不断曝出,接下来几篇我们主要说一下app
的安全机制。感兴趣的看我上面几篇。
1. APP安全机制(一)—— 几种和安全性有关的情况
2. APP安全机制(二)—— 使用Reveal查看任意APP的UI
3. APP安全机制(三)—— Base64加密
4. APP安全机制(四)—— MD5加密
5. APP安全机制(五)—— 对称加密
6. APP安全机制(六)—— 非对称加密
7. APP安全机制(七)—— SHA加密
8. APP安全机制(八)—— 偏好设置的加密存储
9. APP安全机制(九)—— 基本iOS安全之钥匙链和哈希(一)
10. APP安全机制(十)—— 基本iOS安全之钥匙链和哈希(二)
开始
首先看下写作环境
Swift 4.2, iOS 12, Xcode 10
本篇主要是了解iOS密码和安全工具如何帮助您生成和安全保存密码,以及在移动应用和网站之间同步密码。
以下任何一种情况听起来都很熟悉吗?
- 一个应用程序要求您创建一个新的iOS密码,然后继续输入您的猫的名字,就像您使用过的每个网站和应用程序一样。
- 下载应用程序时,您已经拥有一个网站帐户。 您的凭据在网络上自动填充,但是当您尝试在移动设备上登录时,您无法记住它们。
- 应用程序要求新的iOS密码至少包含99个字符 - 至少包含一个字母,五个非连续数字和一个标点符号的素数,不包括! 和*。
- 你继续让应用程序检查它发送给你的两步验证码短信,但每次你返回时似乎都记不起随机的字符串。
作为用户,这些类型的场景使任何人很不方便和恼火。
作为开发人员,这使得iOS密码处理成为一种需要权衡的行为:一方面,使登录过程尽可能简单至关重要;您添加的每个密码要求都会增加用户卸载应用的动机。 与此同时,开发人员有责任帮助用户保持安全;黑客和滥用者对活动家,名人和John Q.公众进行永无止境的攻击。
iOS Password Tools to the Rescue! - iOS密码工具
不要害怕! iOS密码自动填充,自动强密码和安全代码自动填充功能全部为您服务!
在本教程中,您将使用这些iOS 12安全工具,使您的用户能够:
- 在您的网站和您的应用之间共享和同步密码。
- 保存并更新iOS密码。
- 自动生成安全密码。
- 访问通过短信发送的验证安全代码,无需离开应用。
注意:本教程要求您拥有付费的iOS Developer Program资格。
虽然本教程只需要很少的编码,但它假设您对Xcode和终端有一定的了解。
打开示例程序,在Xcode中打开UltraMotivator-starter / UltraMotivator.xcodeproj
。 然后,在您的模拟器上构建并运行入门应用程序。
从登录屏幕开始,点击右下角的Sign Up
按钮,导航到注册页面。 输入用户名和密码,然后点击Sign Up
。 应弹出错误对话框。 在应用程序的当前状态下,您还无法登录,因为应用程序的后端尚不存在。
注意:即使您尚未设置
text field
内容类型,iOS仍可能将您的字段识别为与登录相关。 它通过分析占位符,UI元素和屏幕文本来实现。 这意味着,虽然iOS可能会自动提供iOS密码自动填充,强密码生成或代码自动填充,但这种行为无法保证,因此最好明确地将这些功能放在适当的位置。
遗憾的是,未经身份验证的用户无法获得按需鼓励,这就是下面我们需要完善的事。
A Peek at the Web App
切换回Finder
并导航到UltraMotivator-starter ▸ Motivational-Server
。此目录包含您将部署到Web以使iOS应用程序启动并运行的服务器应用程序。
与iOS应用程序一样,服务器应用程序是使用Vapor编写的,Vapor
是Swift
的现代Web
框架。
花点时间了解Web应用程序的结构,最值得注意的是,这包括:
-
Resources ▸ Views
:包含Vapor
的Leaf
文件,用于布置网页模板。 -
Sources ▸ App
:包含服务器应用程序逻辑。此逻辑将处理身份验证和随机生成。
在本教程中,您将把服务器应用程序部署到Heroku
,因为它提供了一个快速,简单且免费的解决方案。如果您还没有Heroku
帐户,请注册以在https://signup.heroku.com/上创建一个帐户。记下您的密码,因为您以后需要它。
Creating a Heroku App - 创建一个Heroku App
访问https://dashboard.heroku.com并登陆。
在右上角,单击标记为New
的按钮,然后选择Create new app
。
在下一个屏幕上,输入唯一的应用程序名称或将App name
Field留空。 然后,选择部署区域(deployment region)
。
如果您将App name
留空,Heroku
将自动生成一个独特的slug
来为您识别应用程序。 无论您是创建名称还是Heroku
为您指定一个名称,请记下您的应用名称,因为您稍后在配置应用时需要它。 单击Create app
。
创建应用程序后,Heroku
会将您重定向到您应用的页面。
选择页面顶部附近的Resources
选项卡。 在名为Add-ons
的部分下,输入postgre
,你会看到Heroku Postgres
的一个选项;选择此选项。
这会将您带到另一个屏幕,询问要配置的数据库类型。
选择Hobby Dev - Free
名称。 单击Provision
按钮,Heroku
将完成剩下的工作。
完成后,数据库将显示在Resources
选项卡下,表示您的Web应用程序已成功创建。
Getting Your App’s Identifiers - 获取应用程序的Identifiers
现在您已经设置了Heroku
来托管您的Web应用程序,现在是时候在Web和移动设备之间共享Ultra Motivator
的证书或者凭据了。 为此,您需要在iOS应用程序和Web服务器之间建立双向关联。
首先,您将使您的iOS应用程序可识别并授予其必要的权限。 登录Apple的Developer Portal
。 在Member Center
中,选择Certificates,Identifiers & Profiles
。
转到Identifiers ▸ App IDs
,然后选择Add
按钮。 输入App ID Description
,然后向下滚动到App ID Suffix ▸ Explicit App ID
部分并创建一个Bundle ID
;这将是您的App ID
。 向下滚动到App Services
部分,然后启用Associated Domains
和AutoFill Credential Provider
服务。
向下滚动并单击Continue
保存。 在摘要页面上,您将看到下一个,确认已启用Associated Domains
和AutoFill Credential Provider
。 然后,滚动到底部并单击Register
。 然后,您应该看到Registration Complete
页面,确认您已成功完成此步骤。
记下ID图标右侧应用程序标题信息显示中的Prefix
。 这是您的Team ID
。
Adding App Identifiers to the Web App (Locally) - 将应用程序标识符添加到Web应用程序(本地)
现在,打开终端并cd
到UltraMotivator-starter / Motivational-Server
。 例如,如果您已将UltraMotivator
文件解压缩到桌面上,则可以输入:
cd ~/Desktop/UltraMotivator-starter/Motivational-Server
这将Motivational-Server
(包含服务器应用程序的目录)设置为工作目录。
在Motivational-Server
中,通过输入终端命令创建一个Public
目录,然后在其中创建一个嵌套的.well-known
目录:
mkdir -p Public/.well-known/
然后,在使用您的Team ID
和您的App ID
替换时,输入以下内容:
echo '{"webcredentials": {"apps": ["<#Team Identifier#>.<#App Bundle ID#>"]}}' \
> Public/.well-known/apple-app-site-association
注意:
apps
数组可以包含多个“.”
字符串。 这允许您在多个iOS应用程序和单个域之间设置双向关联。使用确切的文件名
apple-app-site-association
非常重要,因为iOS将查找具有此精确名称的文件。
切换到Finder
并导航到UltraMotivator-starter / Motivational-Server / Public / .well-known / apple-app-site-association
。 如果您无法看到.well-known
,请使用快捷键Command + Shift +.
切换隐藏文件可见性。 在文本编辑器中打开关联文件以确认它包含指定的JSON。
Setting Up Heroku CLI
现在您的移动应用程序的ID
已就位,您可以将这些ID上传到您的网络应用程序。 为此,您需要Heroku
的命令行界面工具 - Heroku CLI
的帮助。
你需要Homebrew才能安装Heroku CLI
。 如果您的计算机上尚未安装Homebrew
,请在终端中输入以下内容进行安装:
/usr/bin/ruby -e \
"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
现在,您可以使用终端命令通过Homebrew
安装Heroku CLI
:
brew install heroku/brew/heroku
安装Heroku CLI
后,在终端中输入以下内容登录您的帐户:
heroku login
然后,在出现提示时输入您的Heroku
凭据。
登录后,输入以下内容确认登录成功:
heroku auth:whoami
这确认了whoami
输出正确的电子邮件地址。
Deploying the Server App
Heroku
将通过Git
部署您的Vapor
应用程序,因此您需要将您的服务器应用程序放入Git存储库。
在终端中,确认Motivational-Server
仍然是您的工作目录。 为此,请输入命令pwd
作为完整目录地址。 然后,在替换之前在本教程的“Creating a Heroku App”
部分中设置的Heroku
应用程序名称时输入这些命令:
git init
git add .
git commit -m "Vapor server"
heroku git:remote -a <Heroku app name>
使用这些命令,您已将远程服务器应用程序添加为本地Git存储库。
Heroku
使用Buildpack
在部署应用程序时提供构建应用程序的方法。 在终端中输入以下内容:
heroku buildpacks:set https://github.com/vapor-community/heroku-buildpack
这会为您的应用设置Buildpack
。
最后,要将您的应用部署到Heroku
,请输入:
git push heroku master
这会将您的主分支远程推送到您的Heroku
。 你将不得不等待几分钟一直到一切建立起来。
注意:如果
Heroku
的当前部署堆栈版本与buildpack
不兼容,则推送将失败。 错误消息将告诉您到底发生了什么以及如何解决它。 例如,您可能会看到一条消息,告诉您输入命令:
heroku stack:set heroku-16 -a <your-application-name>
按照错误消息中的说明操作,然后重复push
命令。
Heroku
通常会在完成构建后自动启动您的应用程序。 但是,为安全起见,要手动开始运行您的应用,请输入:
heroku ps:scale web=1
然后,要打开您的Web
应用程序,请输入heroku open
。 您还可以在Settings ▸ Domains and certificates
下方的Heroku dashboard
中找到您的Web应用程序URL。
恭喜! 您现在是一个能够通过apple-app-site-association
文件识别您的iOS应用程序的网站的拥有者。 您可以通过https://[your domain]/.well-known/apple-app-site-association
查看您的apple-app-site-association
文件。 你已经征服了双向绑定的前半部分,先休息下~~
后记
本篇主要讲述了密码工具:提高用户安全性和体验,感兴趣的给个赞或者关注~~~