Mysql 在sql注入的情况下从准备好的语句返回错误
我试图测试我准备好的语句,该语句保护一个字段,以便在SQL注入的情况下获取错误消息。到目前为止,我尝试了数千次攻击,所有我给予的价值观都被接受了。我是否使用了错误的语法或攻击?我看不出问题出在哪里。这是我的密码:Mysql 在sql注入的情况下从准备好的语句返回错误,mysql,prepared-statement,Mysql,Prepared Statement,我试图测试我准备好的语句,该语句保护一个字段,以便在SQL注入的情况下获取错误消息。到目前为止,我尝试了数千次攻击,所有我给予的价值观都被接受了。我是否使用了错误的语法或攻击?我看不出问题出在哪里。这是我的密码: try { // $host = "localhost"; // $username = "root"; // $password = "root"; // $db_name = "po
try {
// $host = "localhost";
// $username = "root";
// $password = "root";
// $db_name = "pokemon";
$conn = new PDO('mysql:host='.$host.';dbname='.$db_name.';', $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$meldung="";
$name =$_REQUEST['name'];
$gewicht = $_REQUEST['Gewicht'];
$größe =$_REQUEST['Größe'];
$spezies = $_REQUEST['Spezies'];
$stufe =$_REQUEST['Stufe'];
$atacke =$_REQUEST['Attacke'];
$array = explode(',', $_REQUEST['Attacke']);
$stmt = $conn->prepare("INSERT INTO Pokemon (`Name`,`Gewicht`,`grosse`,`spezies`,`stufe`) VALUES (:Name, '".$gewicht."', '".$größe."', '".$spezies."', '".$stufe."')");
$stmt->bindParam(':Name', $name);
// $stmt->bindParam(':Gewicht', $gewicht);
// $stmt->bindParam(':grosse', $größe);
// $stmt->bindParam(':spezies', $spezies);
// $stmt->bindParam(':stufe', $stufe);
$stmt->execute();
}
catch(PDOException $e)
{
$meldung = "Error: " . $e->getMessage();
echo $meldung;
}
谢谢您是否已使用包含单引号的文本(如
O'Brian
)填充了例如$gewicht
)?如果sql注入出现错误消息,您的意思是什么?没有这样的事情,一个预先准备好的语句会逃逸参数以避免sql注入,但它不会寻找注入并警告您-如果这是您试图存档的内容。是的,这对大学来说是一个小任务,在sql注入的情况下,我们被要求返回一个错误。您的代码太复杂,无法进行简单的概念验证,而且无法运行,因为它甚至没有输入数据。我已经编写了一个,我确实得到了一个PDOException
。你的意思是我应该直接在准备好的语句中使用变量,而不是绑定它吗??