我有一个包含几百行的小型MySQL数据库(全部为文本,没有图像)。我使用iQuery请求所有行,并在客户端进行所有过滤。 iQuery代码如下:
$(document).ready( function () {
$.get("alldata.php", function(data){
$('#result').text(data);
});
});
在服务器端,“alldata.php”具有以下代码并将JSON中的数据传递回iQuery:
$sql = "SELECT title FROM mydatabase";
$result = mysqli_query($conn, $sql);
$arr = array();
while($row = mysqli_fetch_assoc($result)){
$row_array['Title'] =$row['title'];
array_push($arr,$row_array);
}
mysqli_close($conn);
echo json_encode($arr);
在我看来,由于没有提交给数据库的用户输入,因此不存在任何注入风险。我是对还是错?非常感谢您的投入!
答案 0 :(得分:7)
你是对的。您的SQL语句本身不包含任何参数,因此没有用于注入的向量。虽然SELECT语句可能存在注入攻击,但在您的情况下,查询不是动态创建的,因此不会被篡改。
答案 1 :(得分:3)
由于没有用户输入,您很安全。恶意用户需要用户输入来注入查询。所以永远不要相信用户输入。