如果没有将用户输入发送到数据库,是否存在注入风险?
Is there any injection risk if no user input was sent to database?
我有一个小型 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);
在我看来不会有任何注入的风险,因为没有用户输入提交到数据库。我是对还是错?非常感谢您的意见!
你是对的。您的 SQL 语句本身不包含任何参数,因此没有注入向量。虽然对 SELECT 语句进行注入攻击是可能的,但在您的情况下,查询不是动态创建的,因此无法被篡改。
您很安全,因为没有用户输入。恶意用户需要用户输入才能注入查询。所以永远不要相信用户输入。
我有一个小型 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);
在我看来不会有任何注入的风险,因为没有用户输入提交到数据库。我是对还是错?非常感谢您的意见!
你是对的。您的 SQL 语句本身不包含任何参数,因此没有注入向量。虽然对 SELECT 语句进行注入攻击是可能的,但在您的情况下,查询不是动态创建的,因此无法被篡改。
您很安全,因为没有用户输入。恶意用户需要用户输入才能注入查询。所以永远不要相信用户输入。