PHP 调用系统与 Bash 脚本安全
PHP calls to system vs Bash scripts Security
大家好,
我做了一个平台来展示CPU、内存和交换数据。出于分析原因,将此数据输入数据库。
目前,它使用 proc 文件系统编写在 bash 脚本中。
该平台是使用 Symfony 框架在 PHP 中编写的。
我是否应该考虑将 bash 脚本移动到我的 PHP 项目并使用函数 system()
、exec()
、shellExec()
还是我应该继续使用 bash 脚本?
从安全的角度来看,我想知道这一点。提供更多信息的来源。
现在 bash 脚本 post 数据到 url(来自 symfony 项目)
服务器是 运行 Debian。
我真的建议你使用 nagios or zabbix
它们是用于监控的强大工具,还有很多免费插件可供使用....
现在回答你的问题:
创建一个代理(守护进程),它将 运行 在您想要监控的每台机器上
代理将只接收虚拟命令名称和参数,而不会接收到要执行的确切命令
虚拟命令与要执行的 script/command 之间的关联将在配置文件(xml、json...)中进行参数化,并且可以从单点部署...
希望对您有所帮助
您的解决方案是一个很好的起点。
- Php 危险函数,如
system()
、exec()
等应该
出于安全原因被禁用。所以你不应该考虑将你的 bash 脚本移动到你的 symfony 项目
您可以用不同的方式连接生成数据的 bash 脚本和 php 应用程序:
- 通过 api 调用(您的方法)。
bash script --> api calls --> php application
。在这种情况下,您需要在生成数据的同时在应用中同步保存数据(有时您希望消除峰值)
- 通过日志文件
bash script --> write log files
&& php application --> read log files
。在这种情况下,您的 bash 脚本不需要了解您的 php 应用程序。您只需就日志文件的格式达成一致。在这种情况下,您可以异步处理应用程序中的数据。
从安全角度来看,这两种方法都可以是安全的,也可以是不安全的。我会出于其他原因(例如,易于编写您想做的事情、可移植性等)选择您的语言,然后专注于使该语言的脚本安全。
如果您所做的只是执行命令,Bash 的优点是简单。但是如果您想要更高级的逻辑并且更容易使用数据库,PHP 会更容易使用。
请注意,您提到的 php 调用确实包含安全问题,您应该谨慎使用它们并通常尽量避免使用它们。
您可能想看看 influxdata 堆栈,听起来它已经完成了您想要的大部分工作。
大家好,
我做了一个平台来展示CPU、内存和交换数据。出于分析原因,将此数据输入数据库。 目前,它使用 proc 文件系统编写在 bash 脚本中。
该平台是使用 Symfony 框架在 PHP 中编写的。
我是否应该考虑将 bash 脚本移动到我的 PHP 项目并使用函数 system()
、exec()
、shellExec()
还是我应该继续使用 bash 脚本?
从安全的角度来看,我想知道这一点。提供更多信息的来源。
现在 bash 脚本 post 数据到 url(来自 symfony 项目)
服务器是 运行 Debian。
我真的建议你使用 nagios or zabbix 它们是用于监控的强大工具,还有很多免费插件可供使用....
现在回答你的问题:
希望对您有所帮助
您的解决方案是一个很好的起点。
- Php 危险函数,如
system()
、exec()
等应该 出于安全原因被禁用。所以你不应该考虑将你的 bash 脚本移动到你的 symfony 项目 您可以用不同的方式连接生成数据的 bash 脚本和 php 应用程序:
- 通过 api 调用(您的方法)。
bash script --> api calls --> php application
。在这种情况下,您需要在生成数据的同时在应用中同步保存数据(有时您希望消除峰值) - 通过日志文件
bash script --> write log files
&&php application --> read log files
。在这种情况下,您的 bash 脚本不需要了解您的 php 应用程序。您只需就日志文件的格式达成一致。在这种情况下,您可以异步处理应用程序中的数据。
- 通过 api 调用(您的方法)。
从安全角度来看,这两种方法都可以是安全的,也可以是不安全的。我会出于其他原因(例如,易于编写您想做的事情、可移植性等)选择您的语言,然后专注于使该语言的脚本安全。
如果您所做的只是执行命令,Bash 的优点是简单。但是如果您想要更高级的逻辑并且更容易使用数据库,PHP 会更容易使用。
请注意,您提到的 php 调用确实包含安全问题,您应该谨慎使用它们并通常尽量避免使用它们。
您可能想看看 influxdata 堆栈,听起来它已经完成了您想要的大部分工作。