SQL注入PDO保护

时间:2015-06-05 08:00:20

标签: php mysql sql-server pdo

我有一个问题 在我的应用程序中,所有SQL查询都使用PDO。例如说明:

<?php
   include "config.php";
   $User_Check = $_SESSION['Login_User'];
   if ($_SERVER["REQUEST_METHOD"] == "POST") {  
     Notes = $_POST["Notes"];  
     try {
        $sql = $conn->prepare('UPDATE Accounts SET Notes = :Notes WHERE   Username  = :User_Check');
        $sql->execute(array('Notes' => $Notes, 'User_Check' => $User_Check));
        header('Location: home.php?Message=Uspesno');
     } catch(PDOException $e) {
        header('Location: home.php?Message=Greska');
     }
   }
   $sql = $conn->prepare('SELECT Notes FROM Accounts WHERE Username =   :User_Check');
   $sql->execute(array('User_Check' => $User_Check));
   $row = $sql->fetch(PDO::FETCH_ASSOC);
   $SelectNotes = $row['Notes'];
   conn = null;
?>

现在我想知道这种方式有多安全?任何人都可以做SQL注入吗?我是否需要添加其他形式的保护?谢谢!

2 个答案:

答案 0 :(得分:2)

只要传递给 //declare boolean boolean clicked=false; //my button clic button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //change boolean value clicked=true; } }); //then on another method or where you want if(clicked) { openmenu(); } else { closemenu(); } 的字符串是静态的(即不包含任何变量),您就可以安全地进行SQL注入。

重要的部分是将用户输入与SQL语句分离,并通过将SQL传递给prepare()并将用户输入传递给prepare()来实现。

类似的问题:How does a PreparedStatement avoid or prevent SQL injection?
(问题标记为,但问题和答案都不是特定于Java的。)

答案 1 :(得分:1)

使用PDO,您不需要转义字符串以防止sql注入,因为准备fx可以完成这项工作。

所以是的,你的要求是安全的。