【问题标题】:Password look up密码查询
【发布时间】:2011-07-08 10:59:53
【问题描述】:

在表单方面需要一些帮助。我创建了一个需要登录的表单。一旦有人登录,他们就会完成表单,然后其他人会检查表单并在提交表单之前输入密码。

我已经设置了一些规则来检查字段是否正确完成,我想编写一些代码来检查密码字段是否完成,然后根据数据库中存储的密码进行检查。

到目前为止,我已经得到了这个。

    if (!empty($_POST['password']))
{


/*connect to database to check password is valid*/
    $user_name = "contains username for database";
    $pass_word = "contains password";
    $database = "name of database";
    $server = "localhost";

    $db_handle = mysql_connect($server, $user_name, $pass_word);
    $db_found = mysql_select_db($database, $db_handle);

    if ($db_found) {

        $uname = quote_smart($uname, $db_handle);
        $pword = quote_smart($pword, $db_handle);

        $SQL = "SELECT * FROM masterpass WHERE password = $password";
        $result = mysql_query($SQL);
        $num_rows = mysql_num_rows($result);

        if ($result) {
            if ($num_rows > 0) {
                continue;
            }
            else {
                $error = true;



  }

不确定我是否以正确的方式进行此操作,因此任何帮助都会很棒。

提前致谢 马特

【问题讨论】:

  • 永远不要存储密码。只存储密码的哈希值。
  • 对不起,我是个新手,所以不太清楚自己在做什么。
  • 不要永远存储密码。仅存储密码的正确加盐哈希。更好的是:somebody has already taken care of all the details -> 使用 PHPpass

标签: php webforms passwords


【解决方案1】:

对于初学者,首先创建$pword

$pword = quote_smart($pword, $db_handle);

并在您的查询中使用$password

$SQL = "SELECT * FROM masterpass WHERE password = $password";

这行不通。

其次,您应该在查询中询问用户名密码。

最后但同样重要的是:永远不要以明文形式保存密码在您的数据库中。生成一个MD5 hash

【讨论】:

  • 感谢您的回复。我不想检查用户名和密码。我只想要一个高级工作人员可以输入的密码,以确认第一次登录页面的人输入的数据是正确的。这可能吗?
  • 建议永远不要将密码存储为纯文本。但是直接哈希还不够好;它需要随机盐。此外,MD5 被认为已过时/损坏(与 SHA1 一样)。另见:stackoverflow.com/questions/6472667/…
【解决方案2】:

我已经设置了一些规则来检查字段是否正确完成,我想编写一些代码来检查密码字段是否完成,然后根据数据库中存储的密码进行检查。

不,你没有。检查密码是否已经在数据库中并不是一件很聪明的事情,因为这会使您的应用程序遭受暴力攻击。我可以使用您的表单来确定使用了哪些密码,如果我可以获得您的用户列表,我可以尝试为每个用户输入每个密码并获得访问权限。

其次,quote_smart 可能并不比 mysql_real_escape_string 更智能。改用它。

第三,正如 Sascha 已经提到的,请生成一个哈希。我不会使用 MD5,而是使用 sha1,但即使使用不加盐的 MD5 也已经显着提高了表单的安全性。

我验证密码的准则是:确保密码长度超过 7 个字符,仅此而已。不要假设人们应该使用什么密码。如果我输入密码并且某些验证程序告诉我不能在密码中使用 {^,我会讨厌它。

【讨论】:

  • 您好,感谢您的回复。该规则只检查密码字段中是否输入了某些内容,然后将其与数据库中存储的值进行检查。如果未在密码字段中输入任何内容,则会出现错误并且不会提交表单。我将不得不研究 MD5,因为我是 php 的新手
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多