2016-09-27 35 views
5

我最近在閱讀以下article在AngularJS應用程序中進行身份驗證的技巧。他的概念非常類似於我通常處理這個過程的方式,但密碼以明文形式綁定到控制器的方式看起來像是一個安全缺陷,我想知道有什麼更好的方法來處理這個問題?如何在AngularJS中正確保護密碼

<input type="password" id="password" ng-model="credentials.password"> 

我想,一種方法是加密控制器上的綁定密碼?有沒有辦法做到這一點?

+0

你已經看到了嗎? https://stackoverflow.com/questions/18959962/how-to-store-password-in-angularjs-securely – Jireugi

+0

如果密碼在客戶端或請求中以純文本格式無關緊要*(應該是使用SSL和POST完成)*,因爲客戶端已經知道密碼,並且如果有人違反了SSL加密,則無論如何您都會遇到更嚴重的問題,並且即使您沒有SSL,如果某人可以接收到請求,它也不會無論他們是否從客戶端獲得真實密碼或哈希密碼,他們仍然可以訪問該用戶帳戶。 – adeneo

回答

1

我的5美分進入討論:

1)控制器僅在您的登錄視圖存在時存在。提交登錄信息後,您通常會更改視圖,從而破壞控制器。

2)即使它會在整個會話期間存在,人們也需要相當複雜的xss方案來獲取數據。

3)另外,你有許多項目的風險進一步降低:

  • 使用HTTPS

  • 使用簽名的服務器在服務器端

證書(如果您使用https,那麼瀏覽器不應允許您向http資源發出ajax調用,並且如果證書不是sigend並且未添加異常,則https請求將失敗該網站)

4)最後,如果服務器支持它,您可以考慮使用oAuth進行身份驗證。

5)Ofc。這一切都取決於您的應用程序所需的安全級別。如果您真的擔心有人拿着密碼,而一個人離開機器,那麼應​​該考慮採用不同的身份驗證方法,例如:客戶端證書(在智能卡上)或其他一次性代碼或其他類似。