【问题标题】:PHP calls to system vs Bash scripts Security [closed]PHP调用系统vs Bash脚本安全[关闭]
【发布时间】:2016-07-07 22:48:02
【问题描述】:

大家好,

我已经制作了一个显示 CPU、RAM 和交换数据的平台。该数据被输入数据库用于分析原因。 目前它是使用 proc 文件系统在 bash 脚本中编写的。

该平台是使用 Symfony 框架用 PHP 编写的。 我是否应该考虑将 bash 脚本移动到我的 PHP 项目并使用函数 system()exec()shellExec() 还是我应该继续使用 bash 脚本?

我想从安全的角度了解这一点。提供更多信息来源。

现在 bash 脚本将数据发布到一个 url(来自 symfony 项目)

服务器正在运行 Debian。

【问题讨论】:

  • 为什么不用zabbix、nagios...?
  • 每个人都问我同样的问题。这些工具大多适用于系统监控。然而,我面临的问题是我有很多自定义应用程序也需要监控。我需要一个平台,将这一切融合在一起。除了这些工具外,还使用我现在正在使用的系统程序。另一个原因是我想学习 Bash 并获得一些 proc 文件系统的知识。但这是题外话。我现在专门询问了安全性。 “我为什么要做这个讨论现在应该被排除在外”
  • 自定义应用可以很容易被Zabbix/Nagios/etc监控。
  • 安装/部署 Nagios 并阅读文档将帮助您设计一个可以轻松增强的强大应用程序。此外,它可以让您专注于编写特定的脚本 shell/批量满足您的业务需求;)

标签: php linux bash sh procfs


【解决方案1】:

从安全的角度来看,这两种方法都可以变得安全和不安全。我会出于其他原因选择您的语言(例如,易于编写您想做的事情、可移植性等),然后专注于使该语言的脚本安全。

如果您所做的只是执行命令,那么 Bash 具有简单的优势。但是如果你想要更高级的逻辑,PHP 会更容易使用,并且更容易使用数据库。

请注意,您提到的 php 调用确实包含安全问题,您应该注意如何使用它们,并且通常尽量避免它们。

您可能想查看influxdata 堆栈,听起来它已经完成了您想要的大部分工作。

【讨论】:

    【解决方案2】:

    您的解决方案是一个很好的起点。

    • system()exec() 等 PHP 危险函数应该 由于安全原因被禁用。所以你不应该考虑将你的 bash 脚本移动到你的 symfony 项目中
    • 您可以以不同的方式连接生成数据的 bash 脚本和您的 php 应用程序:

      1. 通过 api 调用(您的方法)。 bash script --> api calls --> php application。在这种情况下,您需要在生成数据的同时将数据保存在您的应用中(有时您希望消除峰值)
      2. 通过日志文件bash script --> write log files && php application --> read log files。在这种情况下,您的 bash 脚本不需要了解您的 php 应用程序。您只需同意日志文件的格式。在这种情况下,您可以异步处理应用程序中的数据。

    【讨论】:

    • 当然不止这两个选项,web sockets绝对可以是其中之一
    【解决方案3】:

    我真的建议你使用 nagioszabbix 它们是用于监控的强大工具,还有很多免费插件可供使用....

    现在回答您的问题:

  • 创建一个代理(守护进程),它将在您想要监控的每台机器上运行
  • 代理将只接收一个虚拟命令名称和参数,而不是要执行的确切命令
  • 虚拟命令和要执行的脚本/命令之间的关联将在配置文件(xml、json...)中进行参数化,并且可以从单点部署...

    希望有帮助

  • 【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2020-08-23
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      相关资源
      最近更新 更多