-3

可能重复:
在 PHP 中防止 SQL 注入的最佳方法?

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

感谢您的所有反馈!

4

2 回答 2

2

安全问题:

  1. 使用MySQLi / PDO。mysql_ 函数已弃用。

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

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

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

每个使用它的 PHP 文件中都有您的凭据是不好的做法。将它放在一个单独的 PHP中,并在您想要建立连接时包含/要求它。这可以防止您在更改数据库服务器/用户/密码时进行多次更改。

于 2012-10-18T21:31:22.780 回答
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);
于 2012-10-18T21:30:47.883 回答