代码之家  ›  专栏  ›  技术社区  ›  Will Shaver

在IIS FastCGI上是否可以使用PHP进行HTTP身份验证?

  •  3
  • Will Shaver  · 技术社区  · 15 年前

    我刚刚使用php5isapi.dll从php 5.2.3迁移到php 5.3.0,使用fastcgi和php-cgi.exe。在这个站点上,我有用于Windows/NTLM/HTTP身份验证的钩子,执行如下操作:

    if(empty($_SERVER["REMOTE_USER"]))
    {
     header("HTTP/1.1 401 Unauthorized"); 
     exit;
    }
    $winuser = $_Server["REMOTE_USER"];
    
    //parse $winuser to make sure it is on my domain, and can login to the site.
    //set a cookie specifying that this user is logged in
    //redirect to site.
    

    在php 5.2.3和isapi的配合下,这个功能非常好。现在我已经搬到了IIs6上的FastCGI,它已经坏了。它对我有用,但我在服务器上有管理员。没有管理员的人(大多数人)可以看到以下的一些变体:

    FastCGI Error
    The FastCGI Handler was unable to process the request. 
    ________________________________________
    Error Details:
    •   The FastCGI process exited unexpectedly 
    •   Error Number: -1073741819 (0xc0000005). 
    •   Error Description: Unknown Error 
    HTTP Error 500 - Server Error.
    Internet Information Services (IIS)
    

    我试过翻阅文档和日志文件,但似乎没有任何进展。实际上,我不希望远程用户名用于访问.php文件,我只希望获取名称并与数据库匹配。anon用户应该仍然是实际执行PHP的用户。

    有什么线索吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Will Shaver    15 年前

    有一些进展,但还没有真正的解决方案。

    1. 按照这里的建议是有用的: FastCGI Docs 特别是 安全建议 部分。这就把我的错误从fastcgi 500中取出并记录到了php错误日志中。

    2. 似乎php/iis/fastcgi希望通过用户尝试验证而不是anon用户来访问会话目录(我的目录是c:\php\session)。

    3. 将该文件夹的“修改”权限设置为“所有用户”,允许该网站按需工作。然而,我想知道我这样做会造成多大的安全漏洞…