2015-08-02 15 views
5

Tôi có một cơ sở dữ liệu MySQL nhỏ với vài trăm hàng (tất cả trong văn bản, không có hình ảnh). Tôi yêu cầu tất cả các hàng bằng cách sử dụng iQuery và làm tất cả các lọc ở cuối khách hàng. iQuery code đang điều sau đây:Có nguy cơ tiêm không nếu không có dữ liệu đầu vào của người dùng được gửi đến cơ sở dữ liệu?

$(document).ready(function() { 
    $.get("alldata.php", function(data){ 
     $('#result').text(data); 
    }); 
}); 

Về phía server, các "alldata.php" có đoạn mã sau và vượt qua các dữ liệu trong JSON trở lại 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); 

Dường như với tôi có sẽ không có bất kỳ nguy cơ tiêm nào vì không có đầu vào người dùng nào được gửi đến cơ sở dữ liệu. Là tôi đúng hay sai? Cảm ơn rất nhiều về đầu vào của bạn!

+2

Có một truy vấn, một lựa chọn. Nhưng điều này liên quan đến không có đầu vào của người dùng, không có cách nào để người dùng độc hại tiêm bất kỳ thứ gì thực sự. –

+0

Điểm tốt! Tiêu đề đã được cập nhật cho phù hợp. – LearnAWK

Trả lời

7

Bạn nói đúng. Câu lệnh SQL của bạn không bao gồm các tham số bên ngoài chính nó, do đó không có vector để tiêm. Trong khi các cuộc tấn công tiêm là có thể trên các câu lệnh SELECT, trong trường hợp của bạn truy vấn không được tạo động nên không thể bị làm xáo trộn.

3

Bạn an toàn vì không có đầu vào của người dùng. Một người dùng độc hại cần người dùng nhập vào để tiêm truy vấn. Vì vậy, không bao giờ tin tưởng đầu vào của người dùng.

Các vấn đề liên quan