Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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_Security - Fatal编程技术网

Javascript 保护覆盖内置js对象

Javascript 保护覆盖内置js对象,javascript,security,Javascript,Security,保护重写本机日期对象的方法是什么?或者检测执行环境是否已更改 例如,有人入侵我的代码并覆盖日期,如下所示: function Date() { this.getMonth = function() { return 13; }; } 提前感谢 是的,您可以做一些事情来保护内置组件;但是不,您无法阻止控制浏览器的用户进行黑客攻击。他们可以做任何他们想做的事。添加任何保护内置的代码都不会阻止它们在运行之前使用代码来阻止您保护内置的尝试 因为用户只能以这种方式影响自己

保护重写本机日期对象的方法是什么?或者检测执行环境是否已更改

例如,有人入侵我的代码并覆盖日期,如下所示:

function Date() {
    this.getMonth = function() {
        return 13;
    };
}

提前感谢

是的,您可以做一些事情来保护内置组件;但是,您无法阻止控制浏览器的用户进行黑客攻击。他们可以做任何他们想做的事。添加任何保护内置的代码都不会阻止它们在运行之前使用代码来阻止您保护内置的尝试

因为用户只能以这种方式影响自己,所以不用担心


记住一条基本原则:你不能相信客户发给你的任何东西。在服务器端验证所有内容。“客户端”甚至可能不是web浏览器;有人可能正在向您发送定制的HTTP消息。

您无法阻止另一个脚本覆盖客户端的全局对象

但是,如果您怀疑第三方脚本可能正在这样做,您可以创建一个
Date
的本地引用并使用它:

var mySuperSecretObject = Date;
var today = new mySuperSecretObject();
var month = today.getMonth();

当然,如果第三方脚本在JS运行之前执行,那么脚本可能无法获得正确的
日期
对象,并且新对象(
mySuperSecretObject
)也无法按预期工作。在这种情况下,你无能为力。

你说的“有人入侵我的代码”是什么意思?如果有人可以对您的代码进行任意更改,他们也可以删除您添加的任何“保护”。@melpomene例如,我在页面中添加了第三方脚本(可能会添加其他脚本)@NataZakharchuk:如果您不信任该脚本,请不要将其添加到页面中。您不能信任任何东西,即使是您自己的数据库。