我們有一個有趣的問題。我們有客戶想要使用我們基於網絡的應用程序(後端/數據庫與我們)。但是他們想要加密患者信息,因此我們公司中沒有人能夠看到它。會有某種JavaScript解決方案嗎?或者在發送給我們之前以某種方式使用它們的加密?與web請求的javascript加密
回答
那麼有一個問題。你怎麼想在不知道如何發生的情況下實現en /解密? ;)
一些簡化加密基礎理論:(記住,即時通訊也沒有專家這個主題中)
在今天的密碼,我們主要使用2種不同其正在或者symmetric或不對稱加密的(維基百科:Public-key_cryptography),我們正在關注對稱。你不需要知道他們如何實際加密數據,但你需要知道的是它基於給定的密鑰/密碼。它們之間的區別在於對稱加密對於兩者都使用1個密鑰,對於解密和非對稱使用兩種密鑰,但是目前這不需要任何東西。
因此,有許多不同的算法用於以某種方式進行加密,並且只要使用的密鑰足夠強且足夠隨機,以至於即使它的brutefoce將會持續很多次,也知道正在使用哪種算法應該是個問題年份。
根據使用的密鑰,加密數據的輸出將不同,因此密碼爲「bar」的字符串「foo」與使用不同密碼的同一文本(foo)不同。所以在不知道使用哪個密鑰的情況下無法獲得價值。
我從來沒有在JS中使用加密庫,所以我不能推薦你任何,但我確定有很多在那裏可以用於幾行。一個基於對稱加密的非常好的算法是AES,它也有很多實現在那裏準備使用;)
所以現在你只需要在提交表單上添加一個按鈕,要求輸入密碼然後在視圖/任何想要使用密碼解密數據的頁面上顯示一個按鈕。發送時,可以將加密的數據值發送到其未加密的數據密鑰(而非加密密鑰!)旁邊,以便知道哪個值是什麼。
這裏是一個網站,你可以看到它的行動。注意加密值與密碼的小改動完全不同。你也可以在那裏找到一些代碼。 http://www.movable-type.co.uk/scripts/aes.html
我希望你能理解它,它不太雜亂。我的英文不是很好,所以請原諒我糟糕語法X)
您可以(雖然在安全社區,這是不被視爲一個可行的解決方案1,2)發送一個javascript加密庫他們,但它不會解決問題。
注意:我會在這個答案中假設你的連接使用SSL/TLS,因爲沒有它,你不能安全地與客戶進行通信。
問題是客戶需要信任你。他們將從您的服務器下載JavaScript代碼。所以,服務器的所有者將是總是能夠改變javascript的行爲。這是因爲,即使您向客戶端發送了一個完全有效且經過審覈的完全javascript加密庫,客戶端也無法驗證此情況。唯一的保證是他們從主機獲得了一些東西,他們的他們的根據SSL/TLS證書選擇信任。
通常情況下,人們開始提出惡意的中間人情景。但是,這種擔憂是情緒:您的連接是否由SSL/TLS妥善保護,否則不是。如果一箇中間人的情況是可能的,那麼客戶端從服務器上下載的javascript加密庫也是可疑的。換句話說,如果SSL/TLS層會以某種方式被破壞,那麼客戶端加密也應該被認爲是被破壞的。
如果他們信任足夠的主機,相信他們不會篡改javascript並確實在客戶端執行所有加密,那麼他們可能會相信您不會在服務器端濫用其數據。這留下了很多(不需要的)複雜性。較低的複雜性導致更簡潔的設置,更易於審計。
免責聲明:如果您使用的醫療數據進行工作,有可能是很需要遵守(取決於您所在的國家/國家)的一些規律。如果您對這個級別的問題不滿意,您應該聘請一些專家,或者接受這個請求比您可以輕鬆構建的要複雜得多,並且請告知您的客戶,他們會更好地找到一家擁有更多經驗的公司在操作敏感數據。
完全同意這個答案,寫得很好。 +1 –
- 1. 要加密的請求中的C#Web服務密碼
- 2. C#發送web請求與禁用javascript
- 3. 加密/解密請求
- 4. Ajax請求與Javascript
- 5. 加密從iPhone到Web應用程序的請求?
- 6. CORS請求與Ajax/Javascript/Django
- 7. 如何加密傳出的https請求
- 8. RequireHttpsAttribute和加密的請求數據
- 9. 請求頭字段添加到JMeter的web服務(SOAP)請求
- 10. Javascript跨域Web請求失敗,Status = 0?
- 11. Javascript web服務請求不起作用
- 12. 從Web請求
- 13. Android Web請求
- 14. 從Web請求
- 15. Ruby on Rails Web服務與POST請求
- 16. windows phone 8異步web請求與mvvm
- 17. 請求URI過長與web服務
- 18. ajax請求和響應加密
- 19. 提琴手2重建加密請求
- 20. 請求url並獲取加密文本
- 21. API密鑰請求
- 22. makecert請求密碼
- 23. C#Asp.Net通過其他Web請求取消長的Web請求
- 24. 如何與GZIP加密負載亞軍SOAP請求
- 25. CouchDB從UUID請求減少Web請求
- 26. Javascript AES加密與SSL
- 27. 添加請求頭與Web客戶端C#
- 28. Web請求超時
- 29. 使用web請求
- 30. 的Web API的請求
感謝您的幫助。仍然有點困惑,但也不是頂級的加密明星。這是確切的情況。我們有一個Web應用程序(前端/後端)。他們想要使用這個應用程序,但是當他們填寫病人表格併發送給我們時,我們會收到加密的患者信息。然後,我們將保存發送加密的表單值。當他們要求病人(例如進行編輯等)時,它必須被解密。前端屬於我們,但我們不應該知道如何進行加密/解密。如果你有時間,你可以請一個詳細的想法。 – Benno
我更新了我的帖子,提供了更多信息。請記住,Jacco主要是在談論你應該注意的連接本身的安全性!在我的文章中,你會發現許多可能的方法之一,以實際處理你的客戶想要的。 – KoalaGangsta
你的解釋很完美。我知道了!!非常感謝你,我正在尋找什麼! – Benno