我有一个PHP脚本,它作为CGI程序运行,HTTP Authenticate头被吃掉并吐出来。因此,我想实现某种基于表单的身份验证。作为附加约束,没有数据库,因此不能存储任何会话数据。
我非常愿意拥有一个主用户名和密码。我只需要保护应用程序免受不知道这些凭据的入侵者的攻击。
那么你将如何实现这一点呢?
曲奇饼?
我可以提交表单,如果验证通过,我可以发回一个cookie,这是IP地址的散列密码。然后,我可以阻止页面呈现,除非事物被正确解密。但我不知道如何在PHP中实现它。
发布于 2008-08-20 04:37:35
发布于 2008-08-28 08:54:09
如果您当前正在使用Authenticate,那么您可能已经有了一个htpasswd文件。如果您希望继续使用该文件,但切换到使用基于表单的身份验证,而不是通过Authenticate标头,则可以使用PHP脚本来使用相同的htpasswd文件,并使用会话来维护身份验证状态。
在谷歌上快速搜索php htpasswd,就会发现this page带有一个PHP函数,可以根据htpasswd检查凭据。您可以使用如下代码集成它(假设您将会话设置为自动启动):
// At the top of your 'private' page(s):
if($_SESSION['authenticated'] !== TRUE) {
header('Location: /login.php');
die();
}
// the target of the POST form from login.php
if(http_authenticate($_POST['username'], $_POST['password']))
$_SESSION['authenticated'] = TRUE;发布于 2008-09-20 21:44:17
你真的需要一个表单吗?无论你做什么,你都会受到用户名和密码的限制。如果他们知道这一点他们就会得到你的魔法饼干。如果他们不知道秘密,您希望阻止他们查看页面,而基本授权可以做到这一点,设置起来很容易,而且不需要您做太多工作。
如果web服务器为您处理访问控制,您真的需要查看Authorization头吗?
此外,如果您将应用程序提供给已知的人员列表(而不是公共列表),则可以根据其他因素提供基于web服务器的访问,例如传入的IP地址、客户端证书和许多其他需要配置而不是编程的内容。如果您解释了您的安全限制,我们可能会提供更好的解决方案。
祝你好运,:)
https://stackoverflow.com/questions/17376
复制相似问题