关于php注册的安全帮助

时间:2012-10-18 21:25:32

标签: php mysql sql

  

可能重复:
  Best way to prevent SQL injection in PHP?

这是我在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>

感谢您的所有反馈!

2 个答案:

答案 0 :(得分:2)

安全问题:

  1. 使用MySQLi / PDO。不推荐使用mysql_函数。

  2. 停止使用 root 帐户运行您的mysql查询。创建具有所需最低权限的新数据库用户

  3. 最后(与PHP无关),查看SSL并确保从客户端到服务器的凭据移动。

  4. 此外,不是安全风险,而是......

    使用它的每个 PHP文件中拥有您的凭据是不好的做法。无论何时你想建立连接,都要把它放在单独的PHP include / require中。这可以防止您在更改数据库服务器/用户/密码时进行多项更改。

答案 1 :(得分:1)

使用准备好的声明

$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);