当前位置: 首页 > wzjs >正文

企业网站管理系统 开源wordpress防爆破

企业网站管理系统 开源,wordpress防爆破,小程序怎么开发,包装公司logo设计在 JavaScript 中,原型污染(Prototype Pollution) 是一种通过修改对象的原型链,向所有继承该原型的对象注入或覆盖属性的安全漏洞。这种操作可能导致代码行为异常、数据篡改甚至远程代码执行(RCE)等风险。 …

在 JavaScript 中,原型污染(Prototype Pollution) 是一种通过修改对象的原型链,向所有继承该原型的对象注入或覆盖属性的安全漏洞。这种操作可能导致代码行为异常、数据篡改甚至远程代码执行(RCE)等风险。


原型污染的原理

JavaScript 的原型链继承机制允许对象通过 __proto__(或 Object.getPrototypeOf())访问原型对象。如果攻击者能修改原型对象的属性(如 Object.prototype),所有继承该原型的对象都会继承这些修改。

示例:原型污染的产生
// 直接修改 Object.prototype
Object.prototype.isAdmin = true;const obj = {};
console.log(obj.isAdmin); // true(原型链被污染)

如何防止原型污染?

1. 避免直接操作 __proto__ 或原型
  • 关键点:禁止外部数据直接修改对象的原型链。
  • 代码示例
    // 安全做法:避免动态设置 __proto__
    function safeMerge(target, source) {for (const key in source) {if (key === '__proto__' || key === 'constructor') {continue; // 忽略敏感属性}target[key] = source[key];}
    }
    
2. 使用 Object.create(null) 创建无原型对象
  • 关键点:创建的对象不继承 Object.prototype,天然免疫原型污染。
  • 代码示例
    const safeObj = Object.create(null); // 无原型链
    safeObj.name = "Safe";
    console.log(safeObj.toString); // undefined(无法访问 Object.prototype 的方法)
    
3. 冻结原型对象
  • 关键点:使用 Object.freeze() 禁止修改原型。
  • 代码示例
    // 冻结 Object.prototype
    Object.freeze(Object.prototype);// 尝试污染原型会失败(严格模式下报错)
    Object.prototype.isAdmin = true; 
    console.log(Object.prototype.isAdmin); // undefined
    
4. 安全处理对象合并操作
  • 关键点:在合并对象属性时,过滤敏感键(如 __proto__constructorprototype)。
  • 代码示例
    function safeAssign(target, source) {Object.keys(source).forEach(key => {if (key in Object.prototype) return; // 忽略原型上的键target[key] = source[key];});
    }
    
5. 使用 Map 替代普通对象
  • 关键点Map 的键可以是任意类型,且不会继承原型链属性。
  • 代码示例
    const map = new Map();
    map.set("isAdmin", true);
    console.log(map.get("isAdmin")); // true
    console.log(map.isAdmin); // undefined(无法通过原型链污染)
    
6. 使用安全的第三方库
  • 关键点:避免手写不安全的对象操作,选择经过安全审计的库(如 Lodash 的 _.merge 默认过滤原型键)。
  • 代码示例
    const _ = require('lodash');
    const safeObj = _.merge({}, maliciousPayload); // 自动忽略 __proto__
    
7. 启用严格模式(Strict Mode)
  • 关键点:严格模式下,修改只读属性(如冻结后的原型)会抛出错误。
  • 代码示例
    'use strict';
    Object.prototype.isAdmin = true; // 报错:Cannot add property isAdmin
    

原型污染的常见攻击场景

  1. 解析不安全的 JSON 数据
    const data = JSON.parse('{ "__proto__": { "isAdmin": true } }'); // 可能污染原型链
    
  2. 用户输入合并到对象
    如 HTTP 请求参数、表单数据等未经验证直接合并到对象中。
  3. 第三方库漏洞
    未正确处理用户输入的库可能成为污染入口。

总结

防御方法适用场景优点
过滤敏感键对象合并、深拷贝直接阻断污染路径
使用 Object.create(null)高频操作或敏感数据存储彻底免疫原型链污染
冻结原型全局防护防止所有原型修改
使用 Map键值对存储无原型链,天然安全

核心原则

  • 永远不要信任外部输入,始终验证和清理数据。
  • 最小化原型操作,优先使用无原型对象或安全数据结构。

文章转载自:

http://MFC23tPm.xyLxm.cn
http://UXLBTc3e.xyLxm.cn
http://oube6OWI.xyLxm.cn
http://3YiUwmNu.xyLxm.cn
http://KtKGo1mF.xyLxm.cn
http://Epq3cV1B.xyLxm.cn
http://9350fqeC.xyLxm.cn
http://nM8O8aFy.xyLxm.cn
http://zL9G1D9X.xyLxm.cn
http://73uVVAli.xyLxm.cn
http://5l3pOnhk.xyLxm.cn
http://9Q8pdMWz.xyLxm.cn
http://JiDbOfDU.xyLxm.cn
http://VPW0jyFt.xyLxm.cn
http://UaKvCUed.xyLxm.cn
http://MlZzQaDV.xyLxm.cn
http://piZgFcoB.xyLxm.cn
http://MukrWpS4.xyLxm.cn
http://ntmfMWOt.xyLxm.cn
http://pk8qpTN9.xyLxm.cn
http://zpRwKJZ0.xyLxm.cn
http://9lBgVWSU.xyLxm.cn
http://emiH0Dfg.xyLxm.cn
http://Y4Rj5XFd.xyLxm.cn
http://Sue9W9Y5.xyLxm.cn
http://O3SSp9EG.xyLxm.cn
http://fkfxuY9Z.xyLxm.cn
http://L9TAZU3S.xyLxm.cn
http://21sm88g0.xyLxm.cn
http://y1qxnmDL.xyLxm.cn
http://www.dtcms.com/wzjs/763222.html

相关文章:

  • 化学网站定制签名在线生成器
  • 电商网站建设应用东莞seo网站制作报价
  • 购物商城网站建设公司网站导航的分类有哪些
  • 英铭广州网站建设个人免费域名空间建站
  • 长沙的网站建设公司哪家好怎么做网站信息
  • 网站流量查询最准的仿v2ex wordpress
  • 怎么去做一个网站网站换ip影响 百度
  • html静态网站模板南昌市建设工程质量监督站网站
  • 网站运营面试高端网站建设联系方式
  • 佛山专业建站公司融资网站建设重点
  • 专业seo站长工具成都网站搜索排名优化公司
  • 成都网站建设s1emens温州seo代理
  • 爱站网官网关键词查询商务网站开发设计结论
  • 网站开发公司小程序开发win8平板做网站服务器
  • 外贸网站推广服务怎么做自己的网站赚钱
  • 网站栏目规划在哪个国家做垂直网站好
  • 网站建设采取招标的方式做学分网站
  • 东莞塘厦网站建设wordpress优化技巧
  • html网站开发实验报告哪个网站开发是按月付费的
  • 网站做几个域名比较好网站外链建设实例
  • 开学第一课汉字做网站莱芜警方网站官网
  • 电子商务网站建设期中贺州市住房与城乡建设局网站
  • 图形化app开发工具天津seo网站设计
  • 精品网站建生活服务网站建设
  • 青州网站建设阿里云网站建设方案书一定要嘛
  • 惠州城乡规划建设局网站下载官方购物网站
  • 江苏外贸型网站制作网站怎么做缓存
  • vue网站开发教程HS酒店网站建设
  • 专业集团门户网站建设手机网站建设品牌
  • 要制作自己的网站需要什么材料搭建小程序需要准备什么