系统命令的安全问题

时间:2012-02-21 22:02:33

标签: php

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

让我解释一下。

我需要联系我的信用卡结算公司以发出一批交易。这些交易必须由于特定的用户请求而被取出。

如果错误地将命令仅由其他人取出,则这是完全的灾难。

我想要在网站范围之外调用我需要调用的脚本,例如与“includes”文件夹相邻的文件夹,并使用参数调用它,例如:

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

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

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

你会怎么做? 谢谢!

2 个答案:

答案 0 :(得分:0)

你可以把它包含在页面中吗? 编辑它以接受额外的参数 - 用户名/用户ID /等。 如果你不能编辑它,请有一个包装器脚本来执行检查并调用它

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

答案 1 :(得分:0)

  

如果错误地将命令仅由其他人取出,则这是完全的灾难。

不确定。但你怎么看?!

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

这只是通过shell调用命令(php)。在POSIX系统下,始终有一个用户调用该命令。请参阅系统手册以了解用户。用户始终在shell环境中进行身份验证。这就是它的意思(至少部分)。

因此,您的问题可能不是身份验证,而是您调用脚本的方式。由于你没有在你的问题中提供有关上下文细节的更多信息,因此无法回答(更具体地说是已经编写的内容)。

如果您确实希望确保仅在特定情况下调用特定脚本,请仅在该情况下在系统上创建用户,不要共享密码,然后只有此用户才能调用该命令。从中创建一个shell脚本(shebang PHP)并使该文件仅对该用户可用。