2010-07-08 15 views

回答

2

可以通過提供您知道的東西,您擁有的東西,您所擁有的東西或三者的組合來聲明身份驗證。

iPhone沒有視網膜或指紋掃描儀,所以沒有「你是什麼」選項可用。

客戶端證書可以很好地用作「您擁有的東西」令牌。大多數智能卡通過使用嵌入式證書籤署消息來工作。當證書泄露時,可以將其放到Web服務器引用的證書吊銷列表(CRL)中。顯然,你不想把你的應用程序的嵌入式證書放在CRL中 - 這將拒絕所有用戶的訪問。相反,你會希望用戶將個人證書下載到他們的iPhone。

之後,這是一個監測不尋常行爲的問題,以找到不良行爲者並將這些證書添加到CRL。兩次提供的贈品將是在一段時間內一次發送太多請求或來自太多不同IP的客戶。

登錄/密碼是一個簡單的「你知道的東西」令牌。與證書一樣,登錄/密碼組合可能會受到影響,並且可能會設置類似的監控以發現不適當的行爲。不同之處在於被盜用的賬戶將被標記爲「被阻止」而不是被添加到CRL。

通過同時需要客戶端證書和登錄名/密碼,您可以增加損害帳戶所需的工作量。

當然,您必須確保只有有效的帳戶被添加到數據庫中。如果有自動創建新帳戶和相應客戶端證書的方式,那麼該帳戶創建服務器/進程將成爲糟糕參與者創建可行的未授權帳戶的最簡單方式。要求真實的用戶登錄賬戶將消除自動化流程,但意味着不滿或腐敗的員工可能會創建無效賬戶。要求第二個人對該賬戶進行反簽名使得單個人難以成爲內部威脅。

總而言之,確保客戶的高度完整性是一個過程,可以任意複雜和昂貴。您決定部署哪些工具和流程作爲身份驗證方案必須根據其所保護的價值進行平衡。

+1

謝謝你的全面和寫得很好的答案 – 2010-07-19 10:59:36

1

理論上,如果您希望連接安全,最好是讓客戶端使用證書籤署他們的請求。有關於此的多種資源。在Google上查找「客戶端證書」。

This example from Sun是在Java中,但是這個概念與任何語言都是相似的。

PS:很明顯,這並不妨礙您使用其他身份驗證方法,如密碼,等...

PPS:請記住,如果有人設法從你的應用程序中提取證書,你是擰任何一種方式;-)。您可以想象一家商店向每個應用程序提供單獨的證書,並使受損的證書無效。

相關問題