簡體   English   中英

如何在沒有內存字符串的情況下將用戶密碼從HTML表單獲取到服務器端SecureString中

[英]How can I get a user's password from an HTML form into a server side SecureString without having a string in memory

從理論上講,我想使用SecureString來存儲Web表單用戶提供的密碼,以供服務器稍后使用以完成需要向其他Web服務提供純文本密碼的任務。

我知道使用它的時候幾乎肯定是純文本格式的-除非我能找到一種方法至少可以通過SSL保護它到Web服務,但是我寧願從用戶那一刻起就對其進行遮蓋/加密提交,直到將其提供給端點Web服務為止。

因此,我相信以下是正確的:

  • 獲取密碼的連接是通過SSL進行的
  • 標准網絡表單將通過字符串將數據提供給我的服務器端代碼
  • 可以(必須?)使用一系列字節初始化SecureString
  • SecureString將作為加密文本存儲(由同一台計算機上的同一帳戶加密/解密)

除非我錯過我的猜測,否則密碼將在接收表單數據和處理代碼之間的服務器內存中為純文本格式。 如果是這樣,並且它並不太復雜,我想避免這種情況。 我考慮過使用服務器生成的並在頁面中提供的供JavaScript使用的公共密鑰,在提交給服務器之前在瀏覽器端對密碼進行加密。 然后,將使用私鑰對其進行解密,並將其逐字節傳遞給SecureString。

我發現有關JavaScript加密的每一個問題和文章都放在使用上下文代替SSL或談論在瀏覽器中生成密鑰的上下文中,以期防止中間人攻擊。 我將擁有SSL,將生成密鑰服務器端,並且當然必須信任用戶的瀏覽器(還有其他方法嗎?)。 顯然,沒有什么是完美的,並且內存中存在的字符串暫時還不錯,但我希望盡可能地限制表面積。 我找到了一些聲稱可以使用RSA的JavaScript庫,但是對於其中任何一個的質量或可用性都很少發表評論。

做這個的最好方式是什么? 我認為這可能是矯kill過正,但完全是矯kill過正-還是只是一點? 有更容易的方法嗎?

如果將密碼簡單地緩存並提供為字節數組而不是字符串進行處理,我可能會感到滿意,因此這是一個可以接受的選擇。 我是否應該將密碼簡單地分成多個字段,然后通過SecureString將它們“粘合”在一起?

我認為最重要的一點是最新的ssl,tls版本或用於保護通道的內容,以及如何處理身份驗證和密碼。 對於黑客而言,可能有比您想出的服務器內存更多的有利可圖的入口點。

Https應該已經在瀏覽器和服務器之間的通信加密上以比通常可以訪問的級別低得多的級別加密了。 我也不信任基於javascript的解決方案,因為在客戶端上查看源代碼和進行操作是如此容易。 有可能,但我會持懷疑態度。

至於服務器端,如果您要自己提高自己的素養,我會閱讀單向哈希技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM