簡體   English   中英

Javascript對象中的只讀屬性真的是只讀的嗎?

[英]Are Read-Only Properties in Javascript Objects REALLY Read-Only?

我知道可以用類似於以下代碼的Javascript創建一個只讀對象(對不起,從另一個線程“借用”它):

var obj = {};
Object.defineProperty( obj, "<yourPropertyNameHere>", {
  value: "<yourPropertyValueHere>",
  writable: false,
  enumerable: true,
  configurable: true
});

但是作為Java開發人員,我知道我可以使用反射來更改聲明為私有的字段。 我需要知道的是:是否可以防止惡意的最終用戶更改以上述方式聲明的只讀變量?

編輯:好的,我明白了。 這是整個安全基礎結構的一部分,而不是全部。 從客戶端到服務器端的所有輸入都將在服務器端進行驗證(我不是白痴)。 但是我想探索做某件事的可能性,以使客戶端了解后端安全基礎結構(分配的角色等)。

這個問題只有一個答案,永遠不要相信js。 即使您可以聲明它,也無法確保用戶不會更改孔對象。 避免用戶篡改變量的方法是使用閉包。 只需定義一個函數,聲明所有變量,然后運行該函數即可。 有一個簡寫:

(function () {
    //Your code, DECLARE ALL YOUR VARIABLES WITH "var variableName"
    //i.e.
    var myNumber = 3, myString = 'Hello World', myEmptyVar;
})();

看看“使用嚴格”(嚴格模式)並使用jshint進行更好的編碼

暫無
暫無

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

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