密码保护,同时跟踪谁是谁

时间:2012-02-11 13:02:44

标签: security php

我维持一个农贸市场。该网站的一部分包括一个数据库,其中包含所有不同的农民以及他们本周收获的内容。

目前我有一组管理页面,因为我没有告诉任何人他们在哪里,所以隐藏在公众面前。使用管理页面,我根据需要编辑数据。随着越来越多的农民参与其中,更新他们的数据变得越来越痛苦,我想设置它,以便每个农民都可以注册,使用他们自己的密码登录并在本周编辑他们在市场上拥有的东西,而不会让我参与进来。 / p>

我看过很多用于密码保护页面的文章。我看到的那些已经设置好,一旦用户登录,他们就可以查看所有内容,并且似乎没有一种简单的方法来跟踪谁登录。

如何构建密码保护,同时跟踪谁是谁,以便我可以动态构建自定义管理页面?要记住哪些提示或最佳做法?

谢谢,

布兰登 附:我一直在使用PHP和SQLite

4 个答案:

答案 0 :(得分:0)

确保每个用户都有唯一的登录信息(最好是电子邮件)和密码。然后创建一个包含用户名和密码的2个输入字段的表单,并在回发后,将值与数据库匹配。如果数据匹配,则将user_id(或更多用户数据)存储在会话中。

答案 1 :(得分:0)

请按照您在线找到的这些脚本。

所有归结为:

  • 注册页面收集用户详细信息,保存后检查每个字段是否有效(即使用正则表达式检查电子邮件地址是否有效),还检查所有必填字段是否已完成
  • 如果以上都检出,则在您清理完数据后保存到数据库(我们现在不想要任何SQL注入!)
  • 我建议至少将密码保存为哈希值,所以请使用类似md5()的东西,我也会使用盐键(因此类似于MD5($ password。$ salt)) - SALT可以是用户注册时的时间戳,随机字符串/数字(我建议) - 并将其保存在数据库中。
  • 当用户登录时,清理数据,检查用户名是否存在并获取该匹配条目的salt密钥,然后使用SALT密钥MD5输入密码并查看字符串是否匹配
  • 将某种标志保存到$ _SESSION,例如。 $_SESSION['loggedin'] = true;然后在每个受保护页面的顶部,您可以执行以下示例中的操作
  • 您还可以将时间戳(time())或日期时间(date("Y-m-d H:i:s"))保存到标有last_logged_in的列下的数据库

我知道这不是一堆代码,但它构成了一个基本指南,可以帮助您入门

以上示例

if($_SESSION['loggedin'] !== true){
    header("Location: login.php");
    exit;
} else {
    // rest of protected page
}

答案 2 :(得分:0)

为了找出谁是谁,我会使用会话($ _ SESSION变量)

制作一些简单的登录页面,设置一些id或使用电子邮件作为登录,如果你想也可以制作一些注册页面。

使用随机字符串作为用户的密码,将其发送给他们并告诉他们在首次登录时更改密码。

请勿在DB中存储密码。仅使用密码哈希值(例如sha512)。如果要提高安全性,请使用一些服务器盐或用户盐。 在用户输入密码的每个登录比较哈希中,密码存储在db中。 注意SQL注入漏洞,我建议使用PDO并插入变量作为参数。

答案 3 :(得分:0)

您可以使用Basic HTTP-Auth或根据Sessions构建自己的{{3}}。在这两种情况下都很容易跟踪用户(分别是唯一名称和会话ID)。