我知道可以在Javascript中使用与此类似的代码创建一个只读对象(抱歉,"从另一个线程借用它")
var obj = {};
Object.defineProperty( obj, "<yourPropertyNameHere>", {
value: "<yourPropertyValueHere>",
writable: false,
enumerable: true,
configurable: true
});
但作为Java开发人员,我知道我可以使用反射来更改声明为私有的字段。我需要知道的是:是否可以防止恶意最终用户更改以上述方式声明的只读变量?
编辑:好的,我明白了。这是整个安全基础架构的一部分,而不是整个安全基础架构。从客户端到服务器端的所有输入都将在服务器端验证(我不是完全白痴)。但我想探索做SOMETHING的可能性,让客户端了解后端安全基础设施(分配的角色等)。
答案 0 :(得分:2)
这个问题只有一个答案,绝不相信js。即使您认为可以声明它,也无法确保用户不会更改孔对象。 避免用户篡改变量的方法是使用闭包。只需定义一个函数,声明所有变量,然后运行该函数。有一个简写:
(function () {
//Your code, DECLARE ALL YOUR VARIABLES WITH "var variableName"
//i.e.
var myNumber = 3, myString = 'Hello World', myEmptyVar;
})();
看看'use strict'(严格模式)并使用jshint进行更好的编码