位置: 编程技术 - 正文

Node.js中安全调用系统命令的方法(避免注入安全漏洞)(node.js安装模式选择)

编辑:rootadmin

推荐整理分享Node.js中安全调用系统命令的方法(避免注入安全漏洞)(node.js安装模式选择),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node js api,node js api,node安全框架,nodejs anywhere,node安全框架,nodejs安全性,nodejs 安全,node安全性,内容如对您有帮助,希望把文章链接给更多的朋友!

在这篇文章中,我们将学习正确使用Node.js调用系统命令的方法,以避免常见的命令行注入漏洞。

我们经常使用的调用命令的方法是最简单的child_process.exec。它有很一个简单的使用模式;通过传入一段字符串命令,并把一个错误或命令处理结果回传至回调函数中。

这里是你通过child_process.exec调用系统命令一个非常典型的例子。

不过,当你需要在你调用的命令中添加一些用户输入的参数时,会发生什么?显而易见的解决方案是把用户输入直接和您的命令进行字符串合并。但是,我多年的经验告诉我:当你将连接的字符串从一个系统发送到另一个系统时,总有一天会出问题。

为什么连接字符串会出问题?

嗯,因为在child_process.exec引擎下,将调用执行"/bin/sh"。而不是目标程序。已发送的命令只是被传递给一个新的"/bin/ sh'进程来执行shell。 child_process.exec的名字有一定误导性 - 这是一个bash的解释器,而不是启动一个程序。这意味着,所有的shell字符可能会产生毁灭性的后果,如果直接执行用户输入的参数。

比如,攻击者可以使用一个分号";"来结束命令,并开始一个新的调用,他们可以使用反引号或$()来运行子命令。还有很多潜在的滥用。

那么什么是正确的调用方式?

Node.js中安全调用系统命令的方法(避免注入安全漏洞)(node.js安装模式选择)

execFile / spawn

像spawn和execFile采用一个额外的数组参数,不是一个shell环境下可以执行其他命令的参数,并不会运行额外的命令。

让我们使用的execFile和spawn修改一下之前的例子,看看系统调用有何不同,以及为什么它不容易受到命令注入。

child_process.execFile

运行的系统调用

child_process.spawn

使用 spawn 替换的例子很相似。

运行的系统调用

当使用spawn或execfile时,我们的目标是只执行一个命令(参数)。这意味着用户不能运行注入的命令,因为/bin/ls并不知道如何处理反引号或pipe或;。它的/bin/bash将要解释的是那些命令的参数。它类似于使用将参数传入SQL查询(parameter),如果你熟悉的话。

但还需要警告的是:使用spawn或execFile并不总是安全的。例如,运行 /bin/find,并传入用户输入参数仍有可能导致系统被攻陷。 find命令有一些选项,允许读/写任意文件。

所以,这里有一些关于Node.js运行系统命令的指导建议:

避免使用child_process.exec,当需要包含用户输入的参数时更是如此,请牢记。尽量避免让用户传入参数,使用选择项比让用户直接输入字符串要好得多。如果你必须允许用户输入参数,请广泛参考该命令的参数,确定哪些选项是安全的,并建立一个白名单。

Node.js实现的简易网页抓取功能示例 现今,网页抓取已经是一种人所共知的技术了,然而依然存在着诸多复杂性,简单的网页爬虫依然难以胜任Ajax轮训、XMLHttpRequest,WebSockets,FlashSockets等

node.js实现BigPipe详解 BigPipe是Facebook开发的优化网页加载速度的技术。网上几乎没有用node.js实现的文章,实际上,不止于node.js,BigPipe用其他语言的实现在网上都很少见。以

node.js中实现同步操作的3种实现方法 众所周知,异步是得天独厚的特点和优势,但同时在程序中同步的需求(比如控制程序的执行顺序为:func1-func2-func3)也是很常见的。本文就是对这个问

标签: node.js安装模式选择

本文链接地址:https://www.jiuchutong.com/biancheng/374264.html 转载请保留说明!

上一篇:详谈nodejs异步编程(nodejs 异步任务队列)

下一篇:Node.js实现的简易网页抓取功能示例(node.js怎么样)

  • 代扣个税怎么做凭证
  • 小规模计提增值税
  • 增值税发票如何作废流程
  • 兼营和混合销售的联系
  • 公司在筹备阶段可以不交社保
  • 上年度职工月平均工资是税前还是税后
  • 支出和成本的关系和区别
  • 预估收入增值税申报
  • 发票一年不能开超多少才不扣税费
  • 货物和运费一起开票怎么开
  • 转让固定资产发生的费用可以税前扣除吗
  • 开票时显示没有原票抄报信息
  • 增值税专用发票怎么开
  • 销售的增值税怎么算
  • 收到土地使用权转让金会计分录
  • 稿酬所得是否需要按照累计预扣税率
  • 建筑安装税务分类编码为多少?
  • 取得专用发票不交增值税
  • 母公司向分公司收取管理费
  • 2020年916减免退库什么意思
  • 小规模纳税人月销售额不超过10万免征
  • 小规模开3%专票可享受减免
  • 库存现金的收支账务处理
  • 项目材料验收流程
  • 出口退税过期了怎么办理
  • 留抵税额如何抵扣
  • SymSPort.exe - SymSPort是什么进程 有何作用
  • 损益类科目的借方是增加还是减少
  • mac 怎么操作
  • 事业单位专项经费包括哪些
  • win11系统未激活
  • 支付厂房租金计入什么科目
  • 支付手续费方式委托代销商品确认收入
  • 企业资产负债表有何作用
  • 预计利润表中的销售成本如何计算
  • 冲销暂估入账应该填什么凭证
  • 收到投资款的会计科目怎么入账
  • alex研究原文
  • 前端 自动化脚本 怎么写
  • FPN细节剖析以及pytorch代码实现
  • window.eval方法
  • mysql desc(DESCRIBE)命令实例讲解
  • 处置固定资产清理费用影响利润吗
  • 增值税申报表填错不影响税额
  • 收到进项发票不对公账怎么办
  • 总公司中标后走账怎么办
  • 上个月的留底税这个使用,会计分录
  • 帝国cms到底好不好
  • 个税显示退税成功但是没有收到钱
  • 个体工商户免费开票额度
  • 捐赠纳税调整额怎么算
  • 非货币性资产交换换入资产的入账价值
  • 汽车租赁公司怎么办理
  • 政府补贴项目需要审批吗
  • 工程检测费的会计分录
  • 股份有限公司股东人数
  • 跟老师出差路上可以聊些什么
  • 小规模开专票的税点是多少
  • 待抵扣进项税额什么意思
  • 免征的附加税怎么做账
  • 建筑业营改增后,人工费不存在可抵扣
  • Mac下mysql 5.7.17 安装配置方法图文教程
  • xp系统怎么取消用户登录
  • 盘古pg插件
  • ie11怎么打开ie8
  • macbookpro查看硬盘
  • 影响电脑速度的因素
  • win8系统如何打开摄像头
  • win1020h2版好不好
  • xp无法启动如何修复
  • redeonsoftware更新
  • linux最小安装和正常安装
  • python利用format方法保留三位小数
  • android面试基础知识
  • jquery怎么获取
  • android 简历模板
  • psi python
  • javascript数据结构与算法百度云视频资源
  • 银行赠送礼品活动方案
  • 增值税即征即退申报表怎么填
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设