0

买了一个 php 软件,让用户建立网站。但是我付钱的那个人没有建立一个注册表单。我很危险,可以做基本的编码。但我觉得这超出了我的技能水平。我创建的表单可以很好地插入 mysql 数据库,但它会让使用此表单的新用户登录,因为密码字段没有散列。

HMTL 报名表:

<form action="input.php" method="post" class="pcss3f pcss3f-type-hor">
            <header>Fillout the below to join.</header>

            <section class="state-normal">
                <label for="">First Name</label>
                <input type="text" name="first_name"/>
                <i class="icon-user"></i>
            </section>

            <section class="state-normal">
                <label for="">Last Name</label>
                <input type="text" name="last_name"/>
                <i class="icon-user"></i>
            </section>

            <section class="state-normal">
                <label for="">Email</label>
                <input type="email" name="email"/>
                <i class="icon-envelope"></i>
            </section>

            <section class="state-normal">
                <label for="">Password</label>
                <input type="password" name="password"/>
                <i class="icon-key"></i>
            </section>

            <footer>
                <button type="button" onclick="window.location = 'index.html'">Back</button>
                <button type="submit" class="color-blue">Submit</button>
            </footer>
        </form>

和 php 脚本:

<?php
$con = mysql_connect("localhost","name","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("instantw_builder", $con);


$sql="INSERT INTO users (first_name, last_name, username, email, password)
VALUES
('$_POST[first_name]','$_POST[last_name]','$_POST[email]','$_POST[email]','$_POST[password]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)
?>

我需要做什么来散列密码字段?

4

1 回答 1

-2

有许多不同的方法可以散列密码,有些方法比其他方法更好。我建议使用 PHP 中内置的 SHA1 哈希函数。

$hash_password = sha1($_POST[password]);

然后,您希望将此密码存储在数据库中。

当用户登录时,您希望对他们输入的密码进行哈希处理并检查两个哈希值是否匹配。

为了提高安全性,我建议在所有密码的末尾添加一个字符串(只有您知道),以限制保留哈希的成功。

此表单还存在其他关于数据库漏洞的问题,称为 SQL 注入。在这里阅读它们:http: //www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

于 2014-11-21T13:19:41.493 回答