我有一个这样的HTML,我从我的网络服务器
发送到客户端<html>
<head>
<script type="text/javascript">
var myapp = myapp || {};
myapp.settings = {"abc", "xyz", "123"};
</script>
</head>
</html>
在我的客户端应用程序的其余部分中,我有查看myapp.settings对象的检查。
myapp.settings安全吗?黑客可以添加字符串或从myapp.settings中删除字符串吗?如果是这样,有什么示例方法可以做到这一点?
答案 0 :(得分:4)
不,这不安全。
是的,用户可以很容易地操纵myapp.settings对象的状态。
答案 1 :(得分:4)
不,它不安全。事实上,网页中的任何内容都不是完全安全的。
在您的特定示例中,以下是有关如何操作myapp
对象的一些示例:
最终用户可以打开浏览器控制台并输入一行代码来更改该对象。
最终用户可以打开浏览器调试器,设置断点,当它到达该断点时,编辑该对象。
最终用户可以下载或创建一个书签,点击该书签会修改myapp
对象。
最终用户可以设置一个拦截传入页面的代理,对其进行修改然后将其发送到浏览器。
攻击者可以在前往您的路上拦截该页面并对其进行修改(例如,通过您的ISP)。注意:如果您使用https,这将不太可能。
由于浏览器中没有任何内容是完全安全的,因此必须考虑到特定需求来解决安全问题,然后探索选项以处理这些特定问题。
答案 2 :(得分:1)
只要有人可以在该应用中执行脚本,他们就可以修改myapp.settings
。但是,您可以通过使用Object.freeze()
函数来阻止这种情况:
Object.freeze(myapp.settings);
myapp.settings.test = 42;
console.log(myapp.settings.test); // undefined