Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脚本标记中的JS对象是否安全?_Javascript_Html_Security_Ecmascript 6 - Fatal编程技术网

Javascript 脚本标记中的JS对象是否安全?

Javascript 脚本标记中的JS对象是否安全?,javascript,html,security,ecmascript-6,Javascript,Html,Security,Ecmascript 6,我有一个这样的html,我从我的web服务器交付给客户机 <html> <head> <script type="text/javascript"> var myapp = myapp || {}; myapp.settings = {"abc", "xyz", "123"}; </script> </head> </html> var myapp=myapp | |{};

我有一个这样的html,我从我的web服务器交付给客户机

<html>
<head>
    <script type="text/javascript">
        var myapp = myapp || {};
        myapp.settings = {"abc", "xyz", "123"};
    </script>
</head>
</html>

var myapp=myapp | |{};
myapp.settings={“abc”、“xyz”、“123”};
在我的客户端应用程序的其余部分中,我会检查myapp.settings对象

myapp.settings是否安全?黑客可以从myapp.settings中添加字符串或删除字符串吗?如果是,有哪些示例方法可以做到这一点

不,它不安全

是的,用户可以相当轻松地操纵myapp.settings对象的状态。

不,它不安全


是的,用户可以相当轻松地操纵myapp.settings对象的状态。

只要有人可以在该应用程序中执行脚本,他们就可以修改myapp.settings。但是,您可以通过对其使用
Object.freeze()
函数来防止这种情况:

Object.freeze(myapp.settings);
myapp.settings.test = 42;
console.log(myapp.settings.test); // undefined

只要有人可以在该应用程序中执行脚本,他们就可以修改
myapp.settings
。但是,您可以通过对其使用
Object.freeze()
函数来防止这种情况:

Object.freeze(myapp.settings);
myapp.settings.test = 42;
console.log(myapp.settings.test); // undefined

不,它不安全。事实上,网页中没有任何内容是完全安全的

在您的特定示例中,以下是一些如何操作
myapp
对象的示例:

  • 最终用户可以打开浏览器控制台并键入一行代码来更改该对象

  • 最终用户可以打开浏览器调试器,设置断点,并在遇到该断点时编辑该对象

  • 最终用户可以下载或创建一个bookmarklet,单击该bookmarklet将修改
    myapp
    对象

  • 最终用户可以设置一个代理来截取传入页面,对其进行修改,然后将其发送到浏览器

  • 攻击者可以在页面发送到您的途中拦截该页面并对其进行修改(例如,当它通过您的ISP时)。注意:如果您使用的是https,那么这种情况就不太可能发生


  • 由于浏览器中没有任何内容是完全安全的,因此必须考虑到特定的需要来解决安全问题,然后探索解决这些特定问题的选项。

    不,它不安全。事实上,网页中没有任何内容是完全安全的

    在您的特定示例中,以下是一些如何操作
    myapp
    对象的示例:

  • 最终用户可以打开浏览器控制台并键入一行代码来更改该对象

  • 最终用户可以打开浏览器调试器,设置断点,并在遇到该断点时编辑该对象

  • 最终用户可以下载或创建一个bookmarklet,单击该bookmarklet将修改
    myapp
    对象

  • 最终用户可以设置一个代理来截取传入页面,对其进行修改,然后将其发送到浏览器

  • 攻击者可以在页面发送到您的途中拦截该页面并对其进行修改(例如,当它通过您的ISP时)。注意:如果您使用的是https,那么这种情况就不太可能发生


  • 因为浏览器中没有任何东西是完全安全的,所以必须考虑到特定的需要来解决安全问题,然后探索解决这些特定问题的选项。

    谢谢,你能给我展示一些如何操作它的示例吗?这里有一种警告,只有实际用户才能操作这些对象。例如,我很难操纵另一个用户的myapp.settings对象。操作与从浏览器控制台访问对象一样简单。更高级版本的闭合变量访问需要设置断点,但仍然是更改状态的可行方法。我想我可以使用另一个用户指出的Object.freeze(),使其安全或不可修改?它实际上永远不会安全。只需指望它会受到攻击,并验证服务器端的任何敏感信息,即客户端交互发生的情况已得到授权和验证。谢谢,你能给我展示一些如何操作它的示例吗?这里有一个警告,只有实际用户才能操作这些对象。例如,我很难操纵另一个用户的myapp.settings对象。操作与从浏览器控制台访问对象一样简单。更高级版本的闭合变量访问需要设置断点,但仍然是更改状态的可行方法。我想我可以使用另一个用户指出的Object.freeze(),使其安全或不可修改?它实际上永远不会安全。只要指望它受到攻击,并验证服务器端的任何敏感信息,即客户端交互所发生的事情是经过授权和验证的。这不是有效的JavaScript代码。如果它是一个数组,它应该使用方括号(
    [
    ]
    ),如果它是一个对象,它应该有一些值。你认为操作设置会有什么更糟糕的结果?因为对于客户端的东西,我希望被称为“应用程序设置”的东西,一般来说,即使被“黑客”攻击,也是完全无害的。最多,我可以想象“攻击者”可能能够以您不希望的方式控制视图,例如以不同的顺序排列内容或增加分页大小或诸如此类的方式。如果有应该保密的东西,它就不应该在那里。如果这控制了可能使服务器过载的内容(最大请求大小等),那么服务器也应该限制它。这不是有效的JavaScript代码。如果它是一个数组,它应该使用方括号(
    [
    ]
    ),如果它是一个对象,它应该有一些值。你认为操作设置会有什么更糟糕的结果?因为对于客户端的东西,我希望被称为“应用程序设置”的东西,一般来说,即使被“黑客”攻击,也是完全无害的。最多,我可以想象“攻击者”可能会以您不希望的方式控制视图,如l