2010-11-28 55 views
2

是否可以对来自命令行的任何请求进行完全授权?通过命令行安全:这是一个好主意吗? (PHP)

我的想法是做此项检查:

if(isset($_SERVER['argc']) AND $_SERVER['argc']>=2) { 
    // it must be the admin, give him full authorization, no further checks needed. 
} else { 
    // normal web request, authentication needed. 
} 

这是否有道理?

在我开始使用命令行来执行我的PHP脚本之前,我还需要知道些什么吗?

回答

1

只有服务器只有一个用户才是安全的。否则,你需要:

  • 检查脚本
  • 正确的用户ID使脚本只执行该用户

(这是假设Linux服务器)

1

命令行不是一个很好的控制你的web应用程序的地方:你的应用程序显示HTML输出,这对于查看控制台的人来说并不是很好(更不用提JavaScript了)等等)。

您可以安排从命令行运行时生成不同的输出,但作为实际问题:为什么要这么做呢?为什么不让管理员像任何其他用户一样通过网络进行身份验证?

如果你想拥有内置到应用程序无论如何,虽然特殊的后门,我建议这样的事情(这是基于Web):

define('ADMIN_BACKDOOR', true); // comment out to disable 
$is_admin = defined('ADMIN_BACKDOOR') && $_SERVER['REMOTE_ADDR'] == '127.0.0.1'; 

这是IMO几乎不可能利用,并它允许您从自然环境(浏览器)进行管理访问。

+0

我需要这个'后门',因为我希望能够调用无法通过网络访问的脚本,并且无需登录即可对自己进行身份验证。我几乎没有任何管理服务器的经验,而且我即将签署专门的服务器计划。我认为命令行是让cronjobs访问我的脚本的最佳方式。更具体地说,我需要让爬虫开始爬行。我已经为使用命令行的情况建立了特殊的输出设置(例如:不显示任何html的例外) – HappyDeveloper 2010-11-28 11:25:52

+1

请解释“无法通过网络访问”。如果他们确实无法访问,那么需要进行身份验证?另外,我的印象是你想调用的脚本是你的“主”应用程序的一部分。如果他们专门被cron调用,那么肯定这种方法没问题。 – Jon 2010-11-28 11:28:21

相关问题