关于php注册的安全帮助

关于php注册的安全帮助,php,mysql,sql,Php,Mysql,Sql,可能重复: 这是我用PHP做的一个简单注册。 我只是想知道如何使它真正安全,因为我是PHP新手,所以示例也会有所帮助。总而言之,任何资源或指导都是非常好的 <?php $email = $_POST["email"]; $password = $_POST["password"]; $fname = $_POST["first_name"]; $lname = $_POST["last_name"]; $db = "mydatabase"; $connect = mysql_conn

可能重复:

这是我用PHP做的一个简单注册。 我只是想知道如何使它真正安全,因为我是PHP新手,所以示例也会有所帮助。总而言之,任何资源或指导都是非常好的

<?php

$email = $_POST["email"];
$password = $_POST["password"];
$fname = $_POST["first_name"];
$lname = $_POST["last_name"];

$db = "mydatabase";
$connect = mysql_connect("localhost","root","");
if(!$connect){
    die('Could not connect.');  
}

$query = "INSERT INTO users (id, email, password, first_name, last_name) VALUES (DEFAULT, '".$email."', '".$password."', '".$fname."', '".$lname."')";

mysql_select_db($db, $connect);

if(!mysql_query($query)){
    echo 'Failed: '.mysql_error();
}
else{
    echo 'You have registered.';
}

mysql_close($connect);

?>

这是登记表

<html>
<head>
</html>
<body>

<form action="new_user_db.php" method="POST">
    <input type="text" name="first_name" placeholder="First Name" required><br>
    <input type="text" name="last_name" placeholder="Last Name" required><br>
    <input type="email" name="email" placeholder="E-mail" required><br>
    <input type="password" name="password" placeholder="Password" required><br>
    <input type="submit" value="Register">
</form>

</body>
</html>






谢谢你的反馈

使用事先准备好的语句

$db = mysqli_connect($dbserver, $dbuser, $dbpass,$dbname);

$sql = "insert into mytable (mycol1, mycol2) values (?,?)";

$statement = $db->prepare($sql);

$statement -> bindparam("ss",$myval1, $myval2)'

mysqli_stmt_execute(#statement);
安全问题:

  • 使用/。mysql_uu函数已弃用

  • 停止使用root帐户运行mysql查询。以所需的最低权限创建新数据库用户

  • 最后(与PHP无关),研究SSL和保护凭证从客户端到服务器的移动

  • 而且,这不是安全风险,而是


    将您的凭证保存在使用它的每个PHP文件中是不好的做法。只要你想建立连接,就把它放在一个单独的PHP和/it中。这可以防止您在更改数据库服务器/用户/密码时进行多次更改。

    您可以做的第一件事是停止使用
    mysql.*
    函数,它们不再被维护,社区已经开始运行。相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果您想学习,请将您的代码从webroot中删除。电子邮件:
    someone@someplace.com
    。密码:
    密码
    。名字:
    First
    。姓氏:
    Last');删除表用户--。在那里,
    users
    表不见了。请不要使用
    mysql.*
    函数来编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果您选择PDO。另请参见@vascowhite:您使用的是此评论的旧版本:)请参见我上面的版本以获取新版本^