php - 如果没有后备数据库,您将如何实现基于 FORM 的身份验证?

标签 php http authentication cookies cgi

我有一个作为 CGI 程序运行的 PHP 脚本,HTTP Authenticate header 被吃掉并吐出。所以我想实现某种基于 FORM 的身份验证。作为附加约束,没有数据库,因此无法存储 session 数据。

我非常愿意拥有主用户名和密码。我只需要保护应用程序免受不知道这些凭据的入侵者的侵害。

那么您将如何实现呢?

cookies ?

我可以提交表单,如果它通过验证,我可以发回一个 cookie,它是 IP 地址的哈希值和密码。然后我可以阻止页面呈现,除非它正确解密。但我不知道如何在 PHP 中实现它。

最佳答案

您可以通过几种方式做到这一点。

  1. htaccess -- 让您的网络服务器处理保护有问题的页面(虽然不完全基于 cgi 表单)。
  2. 使用 cookie 和某种散列算法(md5 足够好)将密码存储在一个平面文件中,文件中的每一行都是 username:passwordhash。确保 salt与彩虹表相比,您的哈希值具有额外的安全性。 (这个方法有点幼稚...如果你走这条路,要非常注意安全)
  3. 使用类似 sqlite 的东西数据库只是为了处理身份验证。 Sqlite 足够紧凑和简单,即使您不想要大型数据库后端,它仍然可以满足您的需求。

理论上,即使没有数据库,您也可以将 session 数据存储在平面文件中。

关于php - 如果没有后备数据库,您将如何实现基于 FORM 的身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376/

相关文章:

php - 如何显示两个不同表中具有相同名称的列?

php - 多彩多姿的div

http - HTTP 服务器应该如何响应它不希望处理的代理请求?

带有命名空间的 PHP 包含文件

php - 记住 MYSQL 查询结果以便在 PHP 页面中使用

azure - 如何使用 Powershell 对 Azure 订阅执行非交互式 MFA 登录

java - GAE 的身份验证策略

asp.net - NTLM 和自动匿名身份验证 IIS

当服务器怀疑发布的表单数据是垃圾邮件时使用的 http 状态代码

angularjs - 使用 http 请求与手动搜索数组