Do not access Object.prototype method 'hasOwnProperty' from target object

问题代码:

 

 

发现是新版本的ESLint使用了禁止直接调用 Object.prototypes 的内置属性开关,说白了就是ESLint 配置文件中的 "extends": "eslint:recommended" 属性启用了此规则。

 对象实例可以具有属性,这些属性可以将 Object.prototype 的内建函数隐藏,可能导致意外行为或拒绝服务安全漏洞。例如,web 服务器解析来自客户机的 JSON 输入并直接在结果对象上调用 hasOwnProperty 是不安全的,因为恶意客户机可能发送一个JSON值,如 { hasOwnProperty: 1 },并导致服务器崩溃:

 

 为了避免这种细微的 bug,最好总是从 Object.prototype 调用这些方法。例如:

foo.hasOwnProperty(“bar”) 

应该替换为 :

Object.prototype.hasOwnProperty.call(foo, “bar”)

转自:https://www.cnblogs.com/superclound/p/12202576.html

 

posted @ 2022-01-19 14:32  vickylinj  阅读(164)  评论(0编辑  收藏  举报