sql injection pada PDO

Permisi kakak, saya sedang membuat login menggunakan database dengan koneksi menggunakan PDO, untuk sql injection-nya disini saya tedapat masalah, yaitu pada username, email, password, dan password2-nya, kalo hanya dua data kita hanya menambahkan perintah AND ("SELECT * FROM users WHERE username = ? AND password = ?"). Pada kasus ini saya menggunakan 4 data, dan perintah apa yang harus saya gunakan setelah perintah WHERE? Terimakasih :)

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Diperbarui 7 tahun yang lalu

14 Jawaban:

kurang ngerti @sekarbumi maksud pertanyaannya apa? "hanya dua kata" dua kata apa? dan menggunakan 4 data apa?

avatar hilmanski
@hilmanski

2672 Kontribusi 2132 Poin

Dipost 7 tahun yang lalu

Maksud nya gini gan ?

 ("SELECT * FROM users WHERE username = ? AND email = ? AND password = ? AND password_verify = ?")
avatar dodipsitorus
@dodipsitorus

412 Kontribusi 145 Poin

Dipost 7 tahun yang lalu

Jawaban Terpilih

Naaah... itu dia mas dodi, maksud saya seperti itu mas. heheh maaf mas kalo pertanyaan saya kurang jelas, emg agak sulit untuk dijabarkan. Sekali lg terimakasih mas ☺

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

Bisa kok gituu mbak.. kecuali pake OR harus nentuin dulu sesuai kebutuhan mbak dengan tanda kurung.. Misal :

 ("SELECT * FROM users WHERE username = ? AND email = ? AND ( password = ? OR password_verify = ?)")
avatar dodipsitorus
@dodipsitorus

412 Kontribusi 145 Poin

Dipost 7 tahun yang lalu

kenapa masih gagal ya mas dodi? ini hasil errornya mas

Notice: Undefined variable: username in C:\xampp\htdocs\falah\register.php on line 24

Notice: Undefined variable: email in C:\xampp\htdocs\falah\register.php on line 24

Notice: Undefined variable: password in C:\xampp\htdocs\falah\register.php on line 24

Notice: Undefined variable: password2 in C:\xampp\htdocs\falah\register.php on line 24

Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause' in C:\xampp\htdocs\falah\register.php:24 Stack trace: #0 C:\xampp\htdocs\falah\register.php(24): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\falah\register.php on line 24

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

disitu katanya unknown column `email`

coba cek lagi query nya

"SELECT * FROM `users` WHERE `username`= '$username' AND `email`<--kemungkinan ada disini = '$email' AND `password` = '$password' AND `password_verify` = '$password_verify'";

avatar punyaarn
@punyaarn

55 Kontribusi 16 Poin

Dipost 7 tahun yang lalu

Coba tampilin kode mu disini mbak..

avatar dodipsitorus
@dodipsitorus

412 Kontribusi 145 Poin

Dipost 7 tahun yang lalu

terimakasih mas @punyaarn

bagaimana caranya nampilin kode saya diforum ini mas dod, kaya yang pernah mas dodi tampiliin itu mas? saya masih bingung mas

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

pertama klik ini

setelah ituu masukin kode disini

avatar dodipsitorus
@dodipsitorus

412 Kontribusi 145 Poin

Dipost 7 tahun yang lalu

 <?php
session_start();

$link = new mysqli ('localhost', 'root', '');
$sql = "CREATE DATABASE authentication";
$link->query($sql);

$server = 'localhost';
$user = 'root';
$pass  = '';
$db = 'authentication';

try {
$conn = new PDO ("mysql:host=$server;dbname=$db", $user, $pass);
$conn->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// echo 'Berhasil';
} catch (PDOException $se) {
  echo $se->getMessage();
}

if (isset($_POST['register'])) {
     //session_start();
     $query = $conn->prepare("SELECT * FROM users WHERE username = ? AND email = ? AND password = ? AND password2 = ?");
     $query-> execute(array($username, $email, $password, $password2));
     $query-> bindValue(PDO::PARAM_STR);

    if ($password == $password2) {
        $password = password_hash($password, PASSWORD_DEFAULT);
        $sql = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$password')";
        $conn->query($sql);
        $_SESSION['message'] = "You are now logged in";
        $_SESSION['username'] = $username;
        header ('location: home.php');
    } else {
        $_SESSION['message'] = 'The two password do not match';
    }
}

?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <div class="header">
      <h1>Salma Zur'atul Falah</h1>
    </div>

    <form class="kelas" action="register.php" method="post">
      <table>
        <tr>
          <td>Username</td>
          <td><input type="text" name="username" class="textInput"></td>
        </tr>
        <tr>
          <td>Email</td>
          <td><input type="email" name="email" class="textInput"></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input type="password" name="password" class="textInput"></td>
        </tr>
        <tr>
          <td>Password Confirm</td>
          <td><input type="password" name="password2" class="textInput"></td>
        </tr>
        <tr>
          <td></td>
          <td><input type="submit" name="register" value="Register" class="register"></td>
        </tr>
      </table>
    </form>

  </body>
</html>

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

itu kodenya mas

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

mohon dikoreksi ya mas dod :)

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

Coba pelajari ini mbak.. ada kesalahan di variable username, email dan lain2.

https://sekolahkoding.com/kelas/belajar-pdo-database-php/video/prepared-statement-pdo

avatar dodipsitorus
@dodipsitorus

412 Kontribusi 145 Poin

Dipost 7 tahun yang lalu

terimakasih banyak mas dodi :)

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban