簡體   English   中英

加密Ajax數據的最佳和最安全的方法是什么?

[英]What is the best and most secure way to encrypt Ajax data?

我正在開發一個網站,人們可以在該網站上通過Ajax(由jQuery提供支持)注冊和訪問不同的數據。 這很簡單,我做的時候不會有問題。 問題是Ajax顯示的數據需要安全,並且不能通過遠程腳本進行解析。 我可以通過AES(在PHP中)對數據進行加密,並在javascript中成功解密,但是javascript代碼對所有人(登錄后)始終都是可見的。 我可以使用混淆器和javascript加密,但是兩種方法,即使混合使用,也不夠安全且不可解密。 我寧願避免使用SSL連接,因為我試圖阻止注冊用戶訪問信息,而SSL連接只會阻止未注冊用戶訪問數據。

注冊用戶將能夠賺錢,因此對欺詐代碼非常感興趣,這就是為什么它必須防彈的原因。

不幸的是,系統肯定需要Ajax(整個工作原理必須基於Ajax)。 理想的解決方案是將加密密鑰保存在可以由php保存並且可以由javascript訪問的位置上,但是不能由用戶,遠程腳本解析器等訪問的位置。

有人知道為此目的創建安全Ajax連接的方法嗎?

非常感謝您的幫助。

您需要瀏覽器無法做到的事情。

您已經問過: "The ideal solution would be a way to save the encryption key on a place that can be saved by php and accessed by javascript, but not by users, remote script parsers etc."

Web瀏覽器和瀏覽器中的javascript引擎的設計使得想要查看,竊取,借用它的人可以看到該Web瀏覽器可以執行的任何Javascript。 期。 沒有Java可以訪問的地方,但是用戶或遠程腳本解析器不能訪問。 如果出現問題,您將不得不重新考慮應用程序的工作方式。 最有可能的是,您需要將機密內容保存在服務器上,並在服務器上進行更多工作,而在客戶端上進行較少工作,以保護您想要保護的內容。 如果考慮到這一點,瀏覽器只是一個遠程腳本解析器,因此如果您阻止遠程腳本解析,就可以阻止瀏覽器。 如果允許瀏覽器,則允許遠程腳本解析器。

如果需要,您可以根據自己的意願來混淆Javascript。 這將使人類對它的理解和使用它做更多的工作,但這只會是任何堅決而有能力的人如果真的願意擊敗的又一個障礙。 如果這種保密對您真的很重要,那么您需要重新考慮應用程序的設計,以便瀏覽器中不需要秘密信息,並且瀏覽器僅用作顯示和交互引擎。

只是我在這里很清楚。 根據定義,瀏覽器可以執行的任何代碼都必須是任何用戶或任何工具都可以下載和檢查的代碼。 您可以使用SSL保護數據免受傳輸中的窺探者的侵害,但最終它必須像Javascript一樣可讀,瀏覽器才能執行它。

您不能完全按照自己的意願做。 這就像一個防作弊的游戲設計。 您可以使其更加困難,甚至更加困難,但並非100%安全。 您必須采用不同的方法來解決問題,例如,無論采用哪種方法,都要在服務器端檢查操作(例如,以有狀態的方式),並嘗試檢測任何非人為的行為。 但這只是某個人創造的模擬機器人模仿人類行為的問題。 加密用於防止第三方(服務器和客戶端除外)竊聽/捕獲數據,而不是客戶端。 我並不是說要放棄整個事情,而是嘗試使用另一種方法來保護系統。 我想提供更多幫助,但不知道您到底想達到什么目標。

身份驗證是唯一的方法。

只需讓您的用戶進行身份驗證(登錄),然后向他們發送用於加密數據的隨機種子和鹽即可。

沒有種子/鹽,即使惡意用戶可以解密您的數據,它仍然是垃圾。

如果您希望javascript使用一條數據,則客戶端將使用該數據。

如果您不希望重復使用數據,請設置一個服務器端系統,其中每個數據塊僅有效一次。

正確的身份驗證應解決所有這些問題。

我希望用戶僅在Ajax顯示它們時才能看到數據

然后在ajax得到它而不是之前時加載數據。 或僅部分加載數據並將所有敏感工作卸載到服務器。

我認為最好的做法是使您的代碼(生產代碼)過於復雜以至於無法閱讀和編輯,您應該使用字母[az]重命名所有變量,而不應該聲明ny函數始終在另一個function(){}內部使用function(){}這樣,邏輯上更加復雜,客戶端仍然可以看到代碼,但與代碼無關。編輯:我意識到這是一個糟糕的建議

暫無
暫無

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

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