PHP调用系统与Bash脚本安全性

时间:2016-03-21 12:18:38

标签: php linux bash sh procfs

Heey all,

我已经建立了一个显示CPU,RAM和交换数据的平台。为了分析原因,将该数据输入数据库。 此时,它使用proc文件系统以bash脚本编写。

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

我从安全的角度来理解这一点。有了更多信息的来源。

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

服务器正在运行Debian。

3 个答案:

答案 0 :(得分:3)

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

现在回答你的问题:

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

    希望有所帮助

  • 答案 1 :(得分:2)

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

    • system()exec()等其他危险函数应该如此 因安全原因被禁用。因此,您不应该考虑将bash脚本移动到symfony项目
    • 您可以通过不同方式连接生成数据和php应用程序的bash脚本:

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

    答案 2 :(得分:1)

    从安全角度来看,这两种方法都可以安全且不安全。我会选择你的语言是出于其他原因(比如易于编写你想做的事,可移植性等),然后专注于用这种语言使脚本安全。

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

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

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