防止其他代码更改变量

时间:2019-08-25 00:11:37

标签: javascript variables access

我不知道从哪里开始或问什么,所以我来了。

我有三个函数(abc)和一个变量。必须允许函数a来更改变量,但是其他两个变量(bc只能读取该变量,并且必须可以通过以下方式读取其值:我网站上任何地方的任何代码。

长话短说:只有函数'a'可以编辑该变量的值,而没有其他。其他代码只能读取它:

此伪层次结构将如下所示工作:

var data = "some data";


function a() {
  //this function would be able to read & write to 
  //data like so:
  console.log(data);        //reads
  data = 'some other data'; //writes
}
function b() {
  console.log(data);        //reads
  data = 'changed tata';    //This would have to be impossible for that function.
}
function c() {
  // And here the same example as in function b.
}

a(); b(); c();

1 个答案:

答案 0 :(得分:1)

这是一个XY问题。如果您不信任的代码在您的网站中运行,则是否可以写入您的变量之一并不重要,因为它可以通过多种其他方式来拥有该页面:用代码替换所有代码使用其他可以写入的变量,只是窃取身份验证数据并直接与服务器本身进行通讯,等等。解决此问题的唯一真正方法是确保所有不受信任的JavaScript都在不同的源中运行。