APP安全機制(十一)—— 密碼工具:提高用戶安全性和體驗(一)

版本記錄

版本號 時間
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)用程序。

Starter project login screen, sign-up screen, and sign-up error.

從登錄屏幕開始,點擊右下角的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編寫的,VaporSwift的現(xiàn)代Web框架。

花點時間了解Web應(yīng)用程序的結(jié)構(gòu),最值得注意的是,這包括:

  • Resources ? Views:包含VaporLeaf文件,用于布置網(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 DomainsAutoFill Credential Provider服務(wù)。

向下滾動并單擊Continue保存。 在摘要頁面上,您將看到下一個,確認已啟用Associated DomainsAutoFill 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)在,打開終端并cdUltraMotivator-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)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容