2012-07-30 59 views
3

我正在使用AngularJS創建一個網站,該網站將允許用戶在網站上創建帳戶並無縫登錄而無需重新加載頁面。要創建這樣的網站,我使用AngularJS路由來加載不同的partials和$ http來通過xhr訪問php腳本。如前所述,我使用php作爲服務器端腳本,我使用mysql來存儲我的數據。AngularJS:從螢火蟲和用戶會話中隱藏ajax數據

我的問題是沒有頁面重新加載通過$ http服務提交給服務器的數據將顯示在螢火蟲(或等效工具)的網絡標籤。這意味着可以通過這些工具暴露隱私數據,例如密碼,直到頁面關閉。現在我想找到一種方法來阻止用戶在任何工具中查看這些數據。我可以加密數據客戶端。問題在於腳本仍然暴露。有沒有其他人將此視爲問題,並找到解決方法?

我需要考慮的另一件事是用角度存儲用戶會話的最佳方式是什麼?最好是使用php的會話,並使用$ http或使用cookie獲取它的狀態?這兩種方法同樣存在與安全相關的問題。對於cookie,我需要加密內容,並通過使用會話變量通過ajax來回傳遞數據,它可以使用螢火蟲訪問所有內容。所以我想再次瞭解各國人民對此的看法。

+3

我不知道爲什麼這是一個比標準HTTP POST更多的安全風險。如果有人打開Firebug並點擊「網絡」選項卡上的「堅持」,他們將能夠跟蹤所有數據來回是否是AJAX或頁面重新加載。 – IMSoP 2012-08-06 04:20:05

+0

我剛剛看到這個,因爲編輯。我覺得這很有趣,我現在甚至寫了這個問題。這不是我想過的事情了。此外,誰使用Firebug了。我甚至不記得我最後一次。 – Lightbulb1 2017-08-19 10:04:35

回答

2

對於密碼可見性問題,你可以做密碼散列客戶端。 javascript代碼是可見的,但這不會造成問題。哈希函數是單向函數,因此您的密碼無法根據哈希結果進行檢索。 javascript可以對鹽進行硬編碼,因爲它不是祕密(https://stackoverflow.com/a/536756)。

(可選)在將其與數據庫值進行比較之前,您可以在服務器端實現第二個散列值。但是,只有在存在導致讀取密碼值的漏洞的情況下,纔會提供保護,但同一漏洞不允許數據庫更新。

對於其他數據你可以考慮diffie-hellman密鑰交換。

爲確保正在執行的客戶端的JavaScript確實是您提供的腳本,您需要https。它也保護您的頻道,但不會影響您的瀏覽器或螢火蟲(Is this correct? Should firebug see SSL-protected AJAX?)。

我正在實施與angularjs和php類似的東西,但決定不使用客戶端哈希或diffie-hellman密鑰交換。你保護自己的場景很難完成。入侵者需要在登錄前後訪問您的瀏覽器。