系统命令的安全问题


security issue with system commands

为了开始处理批处理命令,我需要从我所在的页面调用一个不同的脚本,但我需要确保没有其他人调用。

让我解释一下。

我需要联系我的信用卡清算公司来发布一批交易。由于特定的用户请求,这些事务只能被删除。

如果错误地指挥权被其他人夺走,那将是一场彻底的灾难。

我想把我需要调用的脚本放在网站范围之外,例如一个与"includes"文件夹相邻的文件夹,并用一个参数来调用它,比如:

"php ../../batch.php?id=5&process=all"

但问题是,在batch.php中,我无法验证该命令是否由任何人发出。我的意思是,当我处理自己的页面时,我总是检查用户是否使用SESSION变量登录。但通过执行脚本,我相信这不能像系统调用自己那样完成,或者可以吗?

有没有办法判断用户是否是执行脚本的确认用户?

你会怎么做?谢谢

如果错误地指挥权被其他人夺走,那将是一场彻底的灾难。

当然。但是你觉得呢?!

$ php ../../batch.php?id=5&process=all

这只是通过shell调用一个命令(php)。在POSIX系统下,总是有一个用户在调用该命令。请参阅您的系统手册以了解有关用户的信息。用户总是在shell环境中通过身份验证。这就是它的作用(至少在一定程度上)。

因此,问题可能不在于身份验证,而在于如何调用脚本。由于你在问题中没有提供太多关于这件事发生的具体情况的信息,所以无法回答(更具体地说,是关于已经在写的东西)。

如果你真的想确保只在非常特定的情况下调用特定的脚本,那么只在系统上为该情况创建一个用户,不要共享密码短语,那么只有这个用户才能调用该命令。用它创建一个shell脚本(shebang PHP),并使该文件仅对该用户可用。

你能把它包括在页面中吗?编辑它以接受额外的参数-username/userid/等。如果你不能编辑它,有一个包装脚本来进行检查并将其称为

最终,您应该使调用脚本足够健壮-SRP