1

どうやら従来の sql インジェクション: (' or '1'='1' -- ') はこのログインでは機能しませんが、十分に安全ですか? そうでない場合は何を提案しますか?

index.php:

<?php

include_once 'includes/connection.php';

if (isset($_POST['login'])){
$username = $_POST['usernameInput'];
$password = md5($_POST['passwordInput']);
$query = $pdo->prepare("SELECT * FROM users WHERE u_n = ? AND u_p = ? ");
$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->execute();
$rows = $query->rowCount();

if ($rows == 1){
    echo "welcome back";
} else {
    echo "incorrect username or passwrod";
}
}

?>

<html>
<center>
    Login :
    <form action="index.php" method="post">
        <input type="text" name="usernameInput" placeholder="Username" autocomplete="off" />
        <input type="password" name="passwordInput" placeholder="Password" autocomplete="off" />
        <input type="submit" name="login" value="Login" />
    </form>
</center>
</html>

接続.php:

<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=justLove', 'root', 'root');
} catch (PDOException $e) {
exit('cannot connect to database.');
}   
?>

あなたの答えを待っています :)

4

0 に答える 0