版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2018.11.30 星期五 |
前言
在這個信息爆炸的年代,特別是一些敏感的行業(yè),比如金融業(yè)和銀行卡相關(guān)等等,這都對
app
的安全機制有更高的需求,很多大公司都有安全 部門,用于檢測自己產(chǎn)品的安全性,但是及時是這樣,安全問題仍然被不斷曝出,接下來幾篇我們主要說一下app
的安全機制。感興趣的看我上面幾篇。
1. APP安全機制(一)—— 幾種和安全性有關(guān)的情況
2. APP安全機制(二)—— 使用Reveal查看任意APP的UI
3. APP安全機制(三)—— Base64加密
4. APP安全機制(四)—— MD5加密
5. APP安全機制(五)—— 對稱加密
6. APP安全機制(六)—— 非對稱加密
7. APP安全機制(七)—— SHA加密
8. APP安全機制(八)—— 偏好設(shè)置的加密存儲
9. APP安全機制(九)—— 基本iOS安全之鑰匙鏈和哈希(一)
10. APP安全機制(十)—— 基本iOS安全之鑰匙鏈和哈希(二)
開始
首先看下寫作環(huán)境
Swift 4.2, iOS 12, Xcode 10
本篇主要是了解iOS密碼和安全工具如何幫助您生成和安全保存密碼,以及在移動應(yīng)用和網(wǎng)站之間同步密碼。
以下任何一種情況聽起來都很熟悉嗎?
- 一個應(yīng)用程序要求您創(chuàng)建一個新的iOS密碼,然后繼續(xù)輸入您的貓的名字,就像您使用過的每個網(wǎng)站和應(yīng)用程序一樣。
- 下載應(yīng)用程序時,您已經(jīng)擁有一個網(wǎng)站帳戶。 您的憑據(jù)在網(wǎng)絡(luò)上自動填充,但是當(dāng)您嘗試在移動設(shè)備上登錄時,您無法記住它們。
- 應(yīng)用程序要求新的iOS密碼至少包含99個字符 - 至少包含一個字母,五個非連續(xù)數(shù)字和一個標(biāo)點符號的素數(shù),不包括! 和*。
- 你繼續(xù)讓應(yīng)用程序檢查它發(fā)送給你的兩步驗證碼短信,但每次你返回時似乎都記不起隨機的字符串。
作為用戶,這些類型的場景使任何人很不方便和惱火。
作為開發(fā)人員,這使得iOS密碼處理成為一種需要權(quán)衡的行為:一方面,使登錄過程盡可能簡單至關(guān)重要;您添加的每個密碼要求都會增加用戶卸載應(yīng)用的動機。 與此同時,開發(fā)人員有責(zé)任幫助用戶保持安全;黑客和濫用者對活動家,名人和John Q.公眾進行永無止境的攻擊。
iOS Password Tools to the Rescue! - iOS密碼工具
不要害怕! iOS密碼自動填充,自動強密碼和安全代碼自動填充功能全部為您服務(wù)!
在本教程中,您將使用這些iOS 12安全工具,使您的用戶能夠:
- 在您的網(wǎng)站和您的應(yīng)用之間共享和同步密碼。
- 保存并更新iOS密碼。
- 自動生成安全密碼。
- 訪問通過短信發(fā)送的驗證安全代碼,無需離開應(yīng)用。
注意:本教程要求您擁有付費的iOS Developer Program資格。
雖然本教程只需要很少的編碼,但它假設(shè)您對Xcode和終端有一定的了解。
打開示例程序,在Xcode中打開UltraMotivator-starter / UltraMotivator.xcodeproj
。 然后,在您的模擬器上構(gòu)建并運行入門應(yīng)用程序。
從登錄屏幕開始,點擊右下角的Sign Up
按鈕,導(dǎo)航到注冊頁面。 輸入用戶名和密碼,然后點擊Sign Up
。 應(yīng)彈出錯誤對話框。 在應(yīng)用程序的當(dāng)前狀態(tài)下,您還無法登錄,因為應(yīng)用程序的后端尚不存在。
注意:即使您尚未設(shè)置
text field
內(nèi)容類型,iOS仍可能將您的字段識別為與登錄相關(guān)。 它通過分析占位符,UI元素和屏幕文本來實現(xiàn)。 這意味著,雖然iOS可能會自動提供iOS密碼自動填充,強密碼生成或代碼自動填充,但這種行為無法保證,因此最好明確地將這些功能放在適當(dāng)?shù)奈恢谩?/p>
遺憾的是,未經(jīng)身份驗證的用戶無法獲得按需鼓勵,這就是下面我們需要完善的事。
A Peek at the Web App
切換回Finder
并導(dǎo)航到UltraMotivator-starter ? Motivational-Server
。此目錄包含您將部署到Web以使iOS應(yīng)用程序啟動并運行的服務(wù)器應(yīng)用程序。
與iOS應(yīng)用程序一樣,服務(wù)器應(yīng)用程序是使用Vapor編寫的,Vapor
是Swift
的現(xiàn)代Web
框架。
花點時間了解Web應(yīng)用程序的結(jié)構(gòu),最值得注意的是,這包括:
-
Resources ? Views
:包含Vapor
的Leaf
文件,用于布置網(wǎng)頁模板。 -
Sources ? App
:包含服務(wù)器應(yīng)用程序邏輯。此邏輯將處理身份驗證和隨機生成。
在本教程中,您將把服務(wù)器應(yīng)用程序部署到Heroku
,因為它提供了一個快速,簡單且免費的解決方案。如果您還沒有Heroku
帳戶,請注冊以在https://signup.heroku.com/上創(chuàng)建一個帳戶。記下您的密碼,因為您以后需要它。
Creating a Heroku App - 創(chuàng)建一個Heroku App
訪問https://dashboard.heroku.com并登陸。
在右上角,單擊標(biāo)記為New
的按鈕,然后選擇Create new app
。
在下一個屏幕上,輸入唯一的應(yīng)用程序名稱或?qū)?code>App name Field留空。 然后,選擇部署區(qū)域(deployment region)
。
如果您將App name
留空,Heroku
將自動生成一個獨特的slug
來為您識別應(yīng)用程序。 無論您是創(chuàng)建名稱還是Heroku
為您指定一個名稱,請記下您的應(yīng)用名稱,因為您稍后在配置應(yīng)用時需要它。 單擊Create app
。
創(chuàng)建應(yīng)用程序后,Heroku
會將您重定向到您應(yīng)用的頁面。
選擇頁面頂部附近的Resources
選項卡。 在名為Add-ons
的部分下,輸入postgre
,你會看到Heroku Postgres
的一個選項;選擇此選項。
這會將您帶到另一個屏幕,詢問要配置的數(shù)據(jù)庫類型。
選擇Hobby Dev - Free
名稱。 單擊Provision
按鈕,Heroku
將完成剩下的工作。
完成后,數(shù)據(jù)庫將顯示在Resources
選項卡下,表示您的Web應(yīng)用程序已成功創(chuàng)建。
Getting Your App’s Identifiers - 獲取應(yīng)用程序的Identifiers
現(xiàn)在您已經(jīng)設(shè)置了Heroku
來托管您的Web應(yīng)用程序,現(xiàn)在是時候在Web和移動設(shè)備之間共享Ultra Motivator
的證書或者憑據(jù)了。 為此,您需要在iOS應(yīng)用程序和Web服務(wù)器之間建立雙向關(guān)聯(lián)。
首先,您將使您的iOS應(yīng)用程序可識別并授予其必要的權(quán)限。 登錄Apple的Developer Portal
。 在Member Center
中,選擇Certificates,Identifiers & Profiles
。
轉(zhuǎn)到Identifiers ? App IDs
,然后選擇Add
按鈕。 輸入App ID Description
,然后向下滾動到App ID Suffix ? Explicit App ID
部分并創(chuàng)建一個Bundle ID
;這將是您的App ID
。 向下滾動到App Services
部分,然后啟用Associated Domains
和AutoFill Credential Provider
服務(wù)。
向下滾動并單擊Continue
保存。 在摘要頁面上,您將看到下一個,確認已啟用Associated Domains
和AutoFill Credential Provider
。 然后,滾動到底部并單擊Register
。 然后,您應(yīng)該看到Registration Complete
頁面,確認您已成功完成此步驟。
記下ID圖標(biāo)右側(cè)應(yīng)用程序標(biāo)題信息顯示中的Prefix
。 這是您的Team ID
。
Adding App Identifiers to the Web App (Locally) - 將應(yīng)用程序標(biāo)識符添加到Web應(yīng)用程序(本地)
現(xiàn)在,打開終端并cd
到UltraMotivator-starter / Motivational-Server
。 例如,如果您已將UltraMotivator
文件解壓縮到桌面上,則可以輸入:
cd ~/Desktop/UltraMotivator-starter/Motivational-Server
這將Motivational-Server
(包含服務(wù)器應(yīng)用程序的目錄)設(shè)置為工作目錄。
在Motivational-Server
中,通過輸入終端命令創(chuàng)建一個Public
目錄,然后在其中創(chuàng)建一個嵌套的.well-known
目錄:
mkdir -p Public/.well-known/
然后,在使用您的Team ID
和您的App ID
替換時,輸入以下內(nèi)容:
echo '{"webcredentials": {"apps": ["<#Team Identifier#>.<#App Bundle ID#>"]}}' \
> Public/.well-known/apple-app-site-association
注意:
apps
數(shù)組可以包含多個“.”
字符串。 這允許您在多個iOS應(yīng)用程序和單個域之間設(shè)置雙向關(guān)聯(lián)。使用確切的文件名
apple-app-site-association
非常重要,因為iOS將查找具有此精確名稱的文件。
切換到Finder
并導(dǎo)航到UltraMotivator-starter / Motivational-Server / Public / .well-known / apple-app-site-association
。 如果您無法看到.well-known
,請使用快捷鍵Command + Shift +.
切換隱藏文件可見性。 在文本編輯器中打開關(guān)聯(lián)文件以確認它包含指定的JSON。
Setting Up Heroku CLI
現(xiàn)在您的移動應(yīng)用程序的ID
已就位,您可以將這些ID上傳到您的網(wǎng)絡(luò)應(yīng)用程序。 為此,您需要Heroku
的命令行界面工具 - Heroku CLI
的幫助。
你需要Homebrew才能安裝Heroku CLI
。 如果您的計算機上尚未安裝Homebrew
,請在終端中輸入以下內(nèi)容進行安裝:
/usr/bin/ruby -e \
"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
現(xiàn)在,您可以使用終端命令通過Homebrew
安裝Heroku CLI
:
brew install heroku/brew/heroku
安裝Heroku CLI
后,在終端中輸入以下內(nèi)容登錄您的帳戶:
heroku login
然后,在出現(xiàn)提示時輸入您的Heroku
憑據(jù)。
登錄后,輸入以下內(nèi)容確認登錄成功:
heroku auth:whoami
這確認了whoami
輸出正確的電子郵件地址。
Deploying the Server App
Heroku
將通過Git
部署您的Vapor
應(yīng)用程序,因此您需要將您的服務(wù)器應(yīng)用程序放入Git存儲庫。
在終端中,確認Motivational-Server
仍然是您的工作目錄。 為此,請輸入命令pwd
作為完整目錄地址。 然后,在替換之前在本教程的“Creating a Heroku App”
部分中設(shè)置的Heroku
應(yīng)用程序名稱時輸入這些命令:
git init
git add .
git commit -m "Vapor server"
heroku git:remote -a <Heroku app name>
使用這些命令,您已將遠程服務(wù)器應(yīng)用程序添加為本地Git存儲庫。
Heroku
使用Buildpack
在部署應(yīng)用程序時提供構(gòu)建應(yīng)用程序的方法。 在終端中輸入以下內(nèi)容:
heroku buildpacks:set https://github.com/vapor-community/heroku-buildpack
這會為您的應(yīng)用設(shè)置Buildpack
。
最后,要將您的應(yīng)用部署到Heroku
,請輸入:
git push heroku master
這會將您的主分支遠程推送到您的Heroku
。 你將不得不等待幾分鐘一直到一切建立起來。
注意:如果
Heroku
的當(dāng)前部署堆棧版本與buildpack
不兼容,則推送將失敗。 錯誤消息將告訴您到底發(fā)生了什么以及如何解決它。 例如,您可能會看到一條消息,告訴您輸入命令:
heroku stack:set heroku-16 -a <your-application-name>
按照錯誤消息中的說明操作,然后重復(fù)push
命令。
Heroku
通常會在完成構(gòu)建后自動啟動您的應(yīng)用程序。 但是,為安全起見,要手動開始運行您的應(yīng)用,請輸入:
heroku ps:scale web=1
然后,要打開您的Web
應(yīng)用程序,請輸入heroku open
。 您還可以在Settings ? Domains and certificates
下方的Heroku dashboard
中找到您的Web應(yīng)用程序URL。
恭喜! 您現(xiàn)在是一個能夠通過apple-app-site-association
文件識別您的iOS應(yīng)用程序的網(wǎng)站的擁有者。 您可以通過https://[your domain]/.well-known/apple-app-site-association
查看您的apple-app-site-association
文件。 你已經(jīng)征服了雙向綁定的前半部分,先休息下~~
后記
本篇主要講述了密碼工具:提高用戶安全性和體驗,感興趣的給個贊或者關(guān)注~~~