zoukankan      html  css  js  c++  java
  • Do not access Object.prototype method 'hasOwnProperty' from target object

    在项目中直接使用对象的 hasOwnProperty 属性判断对象是否包含该值,用eslint fix 修复代码的时候报如下的错。

     是ESLint 配置文件中的 "extends": "eslint:recommended" 属性启用了此规则。

    在ECMAScript 5.1中,新增了 Object.create,它支持使用指定的 [[Prototype]] 创建对象。Object.create(null) 是一种常见的模式,用于创建将用作映射的对象。当假定对象将包含来自Object.prototype 的属性时,这可能会导致错误。该规则防止直接从一个对象调用某些 Object.prototype 的方法。

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

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

    最终修改结果如下:

    Object.prototype.hasOwnProperty.calll(state, key)
  • 相关阅读:
    电商-订单设计(2)
    学生-课程-成绩-教师表的设计
    电商-订单设计(1)
    WCF-错误集合002
    调用 WebService 请求因 HTTP 状态 407 失败
    SQLSERVER 中的事务嵌套
    sqlserver 中的异常捕获
    c# 和 sqlserver 中的事务
    ADO_NET 数据库连接字符串大全
    break循环和continue循环
  • 原文地址:https://www.cnblogs.com/lyt0207/p/13625766.html
Copyright © 2011-2022 走看看