为了开始处理批处理命令,我需要从我所在的页面调用不同的脚本,但我需要确保其他人没有调用它。
让我解释一下。
我需要联系我的信用卡结算公司以发出一批交易。这些交易必须由于特定的用户请求而被取出。
如果错误地将命令仅由其他人取出,则这是完全的灾难。
我想要在网站范围之外调用我需要调用的脚本,例如与“includes”文件夹相邻的文件夹,并使用参数调用它,例如:
"php ../../batch.php?id=5&process=all"
但问题是,在 batch.php 里面,我无法验证该命令是否由任何人发出。我的意思是,当我处理自己的页面时,我总是检查用户是否使用SESSION变量登录。 但是通过执行一个脚本,我认为这不能像系统自己调用那样,或者可以吗?
有没有办法判断用户是否是执行脚本的确认用户?
你会怎么做? 谢谢!
答案 0 :(得分:0)
你可以把它包含在页面中吗? 编辑它以接受额外的参数 - 用户名/用户ID /等。 如果你不能编辑它,请有一个包装器脚本来执行检查并调用它
最终,您应该使调用脚本足够健壮 - SRP
答案 1 :(得分:0)
如果错误地将命令仅由其他人取出,则这是完全的灾难。
不确定。但你怎么看?!
$ php ../../batch.php?id=5&process=all
这只是通过shell调用命令(php
)。在POSIX系统下,始终有一个用户调用该命令。请参阅系统手册以了解用户。用户始终在shell环境中进行身份验证。这就是它的意思(至少部分)。
因此,您的问题可能不是身份验证,而是您调用脚本的方式。由于你没有在你的问题中提供有关上下文细节的更多信息,因此无法回答(更具体地说是已经编写的内容)。
如果您确实希望确保仅在特定情况下调用特定脚本,请仅在该情况下在系统上创建用户,不要共享密码,然后只有此用户才能调用该命令。从中创建一个shell脚本(shebang PHP)并使该文件仅对该用户可用。