如何检查我的PHP脚本,该脚本由wget
util从 Cron Tab 执行完全,而不是从 Web浏览器由任何用户?
答案 0 :(得分:2)
没有可靠的解决方案。你可以做任何事情,你的浏览器也可以做。
您最好的镜头就像发送到wget http://example.com/mysript.php?accesskey=some+really+obscure+password+that+only+you+should+know
并检查脚本中的访问密钥。当然,如果有人获得密码,这种保护是没用的,但它比盲目依赖用户代理嗅探更加一致的失败。
答案 1 :(得分:0)
可能使用$argv
。检查$argv[1]
是否为某个值,并使用值作为参数从crontab调用脚本,如下所示:script.php argument1
。
答案 2 :(得分:0)
您可以在crontab中为脚本http://php.net/manual/reserved.variables.argv.php
传递一些参数然后检查这些args,你会知道你的脚本是从命令行还是web使用。
编辑:
看到答案,让我们说清楚。
使用Wget或cURL或任何HTTP GET请求进行调用将不会通过ARGS! ARGS只会通过本地调用传递(例如:php script.php arg1 arg2)。
请不要,当你不知道它时,请停止说话,如果你不确定的话,可以自己在服务器上试试。
答案 3 :(得分:0)
你的问题是有点难以理解总线我想你不想确保wget请求PHP脚本(由cron发起)
虽然在这种情况下由cron直接调用PHP脚本可能更有效率,但您可以检查服务器的日志记录结束搜索是否匹配wget等用户代理。
答案 4 :(得分:0)
不安全的解决方案是检查User-Agent的标头:
wget -d http://www.google.com/
---request begin---
GET / HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: www.google.com
Connection: Keep-Alive
---request end---
所以你可以这样做:
<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (strstr($userAgent, 'Wget')) {
// wget Request
}