如果没有用户输入发送到数据库,是否存在任何注入风险?

时间:2015-08-02 18:58:34

标签: javascript php mysql sql-injection

我有一个包含几百行的小型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);

在我看来,由于没有提交给数据库的用户输入,因此不存在任何注入风险。我是对还是错?非常感谢您的投入!

2 个答案:

答案 0 :(得分:7)

你是对的。您的SQL语句本身不包含任何参数,因此没有用于注入的向量。虽然SELECT语句可能存在注入攻击,但在您的情况下,查询不是动态创建的,因此不会被篡改。

答案 1 :(得分:3)

由于没有用户输入,您很安全。恶意用户需要用户输入来注入查询。所以永远不要相信用户输入。