簡體   English   中英

是否可以驗證Browser-Javascript會話的完整性?

[英]Is it possible to verify the integrity of a Browser-Javascript session?

眾所周知,Javascript中的重寫對象可能會導致安全問題,或者僅僅是開發錯誤。 我擔心這里的安全性。

假設我有一個敏感的JSON結果,該結果將保存在一個變量中……並且該變量先前已使用_prototypes,getter / setter定義。 進一步假設,結果不只是內存分配,而是被發送到將其發送給“壞家伙”的函數。 現在,我的敏感數據不在我的應用程序范圍內。

我的目的是找到在給定瀏覽器中啟動會話之前將Java腳本,Cookie,SOP和內存“清理”回其原始狀態的方法。

  • 我知道我在這里提到了一些棘手的組件,但是可以進行清潔或驗證嗎?

  • 是否可以將內存中狀態重置為已知的良好狀態?

在分布式計算中,您必須始終假定客戶端在敵人的手中(在這種情況下,這就是瀏覽器)。 並且他們會隨心所欲地做到這一點。 如果您的應用程序的安全性取決於客戶端端某些代碼的正確執行,那么它將不是安全的。

tl; dr:不。

安全方面的第一個問題是:您的威脅模型是什么? 當有人問您這個問題時,這表明您沒有考慮要防御的威脅。 如果您沒有考慮到這一點,那么您就無法構建有效的防御措施。

您的問題沒有解釋威脅模型。 您要防御什么? 您擔心網頁上運行的惡意Javascript嗎?

如果那是威脅,最好的答案是提出問題。 最好的解決方案是確保您永遠不會遇到頁面上運行惡意Javascript的情況。 也許您需要XSS防御,以確保沒有人可以將惡意Javascript注入您的頁面。 如果您確實需要從不受信任的來源運行Javascript,以限制Javascript可以執行的操作,則可能需要一個安全的Javascript沙箱(例如Caja,MS Web Sandbox,Caja,ADsafe,FBJS等)。 我不知道該怎么說; 您沒有為我們提供足夠的信息來解決您的問題。

一般而言,您需要記住,客戶端執行平台是由客戶端而不是您控制的。 因此,您一定不能信任客戶端。 如果您有客戶端不應該知道的機密數據, 請不要將其發送給客戶端 不要讓客戶端Javascript看到它。 如果您違反此規則,則無需進行任何重設,重新擦除或重裝操作就可以節省您的時間。

如果您需要安全的Java沙箱,請確保在IT安全堆棧交換上閱讀以下問題:

您可能會在IT安全方面獲得更好的答案。

您可以檢測該變量是否具有getter/setter並假設為true則認為它是臟的:

var data = {hacked:1};

if(Object.getOwnPropertyDescriptor(data, "hacked").value === data.hacked) {
  //clean
}

暫無
暫無

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

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