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