[英]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.