【问题标题】:HTTP-Authentication with .htpasswd file使用 .htpasswd 文件进行 HTTP 身份验证
【发布时间】:2012-06-04 20:17:09
【问题描述】:

PHP 提供了使用HTTP-Authentication 的可能性。

但是,.htpasswd 文件很难使用。

有一些脚本可以检查 php 中的 .htpasswd 文件(例如 this one)。 但是,这些脚本相当复杂,而且大部分都不支持所有相关的加密类型(例如 MD5,这是程序 htpasswd 使用的默认加密)。

使用标准的 .htaccess 文件会容易得多(只需要 AuthUserFile <.htpasswd-file>)。

但是,我想避免使用显式的 .htaccess 文件,而是使用 php。

有没有一种简单 的方法来使用 php 检查 .htpasswd 文件? php 是否可以“询问”apache 是否应该授予访问权限?

【问题讨论】:

    标签: php apache .htpasswd


    【解决方案1】:

    我怀疑是否有直接的方法要求 apache 验证用户,但几乎没有解决方法:

    1. 为自己实现缺失的算法:APR1-MD5, SHA
    2. shell_exec("htpasswd -nb $user $password") 一起使用以生成哈希并签入.htpasswd 文件
    3. 在使用 .htpasswd 文件对其进行身份验证和执行 curl 调用(使用用户凭据)的内部接口上设置虚拟服务器,检查响应标头(200 表示已授权,4xx 表示未授权)

    【讨论】:

    • 我明白了 - 所以没有非常简单的方法来做到这一点......也许(2)是一个解决方案。谢谢!
    • 如果您要使用 shell_exec,请记住在执行任何命令之前仔细检查/转义用户输入。请记住,仅 php 身份验证不会阻止任何人访问静态内容,例如图像、javascripts 纯 html 文件等。
    • shell_exec("htpasswd -nbm $user $password"); 为我工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多