保护覆盖原生日期对象的方法是什么?或者检测到执行环境发生了变化?
例如,有人破解了我的代码并覆盖了日期,如下所示:
function Date() {
this.getMonth = function() {
return 13;
};
}提前感谢!
发布于 2018-03-12 16:34:04
是的,你可以做一些事情来保护内置的东西;但是no,你不能阻止用户通过控制浏览器进行黑客攻击。他们几乎可以做任何他们想做的事情。添加任何代码来保护内置代码并不能阻止他们在您的代码运行之前使用代码来阻止您保护内置代码的尝试。
因为用户只能通过这种方式影响自己,所以不用担心。
只要记住最基本的规则:你不能相信客户给你的任何东西。在服务器端验证所有内容。“客户端”甚至可能不是web浏览器;有人可能正在向您发送定制的HTTP消息。
发布于 2018-03-12 16:37:08
您不能阻止另一个脚本覆盖客户端的全局对象。
但是,如果您怀疑可能是第三方脚本在执行此操作,则可以创建Date的本地引用并使用它:
var mySuperSecretObject = Date;
var today = new mySuperSecretObject();
var month = today.getMonth();当然,如果第三方脚本在您的JS运行之前执行,您的脚本可能一开始就得不到正确的Date对象,并且您的新对象(mySuperSecretObject)也不会按预期工作。在这种情况下,您无能为力。
https://stackoverflow.com/questions/49230886
复制相似问题