如何在没有后备数据库的情况下实现基于FORM的身份验证

Fra*_*ger 6 php authentication cookies cgi http

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

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

那你将如何实现呢?

饼干?

我可以提供表单,如果它有效,我可以发回一个cookie,它是IP地址的哈希密码.然后我可以阻止页面呈现,除非事物正确解密.但我不知道如何在PHP中实现它.

Jus*_*ard 5

有几种方法可以做到这一点.

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

从理论上讲,即使您没有数据库,也可以将会话数据存储在平面文件中.