首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护重写内置的js对象

保护重写内置的js对象
EN

Stack Overflow用户
提问于 2018-03-12 16:27:23
回答 2查看 87关注 0票数 0

保护覆盖原生日期对象的方法是什么?或者检测到执行环境发生了变化?

例如,有人破解了我的代码并覆盖了日期,如下所示:

代码语言:javascript
复制
function Date() {
    this.getMonth = function() {
        return 13;
    };
}

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-03-12 16:34:04

是的,你可以做一些事情来保护内置的东西;但是no,你不能阻止用户通过控制浏览器进行黑客攻击。他们几乎可以做任何他们想做的事情。添加任何代码来保护内置代码并不能阻止他们在您的代码运行之前使用代码来阻止您保护内置代码的尝试。

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

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

票数 1
EN

Stack Overflow用户

发布于 2018-03-12 16:37:08

您不能阻止另一个脚本覆盖客户端的全局对象。

但是,如果您怀疑可能是第三方脚本在执行此操作,则可以创建Date的本地引用并使用它:

代码语言:javascript
复制
var mySuperSecretObject = Date;
var today = new mySuperSecretObject();
var month = today.getMonth();

当然,如果第三方脚本在您的JS运行之前执行,您的脚本可能一开始就得不到正确的Date对象,并且您的新对象(mySuperSecretObject)也不会按预期工作。在这种情况下,您无能为力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49230886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档