Php SQL注入PDO保护

Php SQL注入PDO保护,php,mysql,sql-server,pdo,java,Php,Mysql,Sql Server,Pdo,Java,我有一个问题 在我的应用程序中,所有SQL查询都使用PDO。例如注释: <?php include "config.php"; $User_Check = $_SESSION['Login_User']; if ($_SERVER["REQUEST_METHOD"] == "POST") { Notes = $_POST["Notes"]; try { $sql = $conn->prepare('UPDATE Accou

我有一个问题 在我的应用程序中,所有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注入吗?我需要添加其他形式的保护吗?谢谢

只要传递给
prepare()
的字符串是静态的(即不包含任何变量),就应该可以避免SQL注入

重要的部分是将用户输入与SQL语句分离,通过将SQL传递到
prepare()
,并将用户输入传递到
execute()

类似问题:

(问题已标记,但问题和答案都不是特定于Java的。)

使用PDO,您不需要为防止sql注入而转义字符串,因为prepare fx可以执行此任务


因此,是的,您的请求是安全的。

对于最常见的事情,您是安全的,但进一步清理您的输入变量不会有什么坏处。像
$Notes=filter\u var($\u POST[“Notes”],filter\u SANITIZE\u STRING)准备好的语句仍然可能被误用(字符串连接),在这种情况下,您与其他任何语句一样容易受到SQL注入的攻击。PDO并不能神奇地解决这个问题。