我有一个问题 在我的应用程序中,所有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注入吗?我是否需要添加其他形式的保护?谢谢!
答案 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,但问题和答案都不是特定于Java的。)
答案 1 :(得分:1)
使用PDO,您不需要转义字符串以防止sql注入,因为准备fx可以完成这项工作。
所以是的,你的要求是安全的。