以下はログインページのPHPコードです。PHPとMySQLのSQLインジェクションのログインページの防止
if(!$_POST["username"] || !$_POST["password"])
{
echo "Username and Password fields are mandatory.";
}
else
{
$query="select user_id from users where user_name='".$_POST["username"]."' and password='".md5($_POST["password"])."' ";
.....
.....
}
これはSQLインジェクションの脆弱なコードだと思います。 MYSQLデータベースへのSQLインジェクションを防ぐためにこのコードで変更する必要があるのは何ですか?
私はMySQLデータベースに接続するには、次のコードを使用しています:
function connect_database()
{
$con = mysqli_connect("servername", "username", "", "dbname");
if (!$con)
{
$con = "";
echo("Database connection failed: " . mysqli_connect_error());
}
return $con;
}
私はmysqli_prepareを使用しようとしますが、エラーを取得しています:
$unsafe_username = $_POST["username"];
$unsafe_password = md5($_POST["password"]);
$query=mysqli_prepare("select user_id from users where user_name= ? and password= ? ");
$query->bindParam("ss", $unsafe_username, $unsafe_password);
$query->execute();
は、私はエラーを次しまっ:
Warning: mysqli_prepare() expects exactly 2 parameters, 1 given
Fatal error: Call to a member function bindParam() on null
私が代わりにmysqli_escape_stringのmysql_real_escape_stringのを使うべきではないでしょうか。 –
'mysql'の場合は、mysqliを使用してください。私は自分の投稿を編集しました。 – XanT