Tôi đã đọc về các cuộc tấn công SQL injection và cách tránh chúng, mặc dù tôi không bao giờ có thể làm cho các ví dụ "khủng khiếp" được cung cấp cho công việc, ví dụ: see this post.SQL Injection có phải là rủi ro hiện nay không?
Tôi đã tạo tệp PHP và bảng trong cơ sở dữ liệu, có giá trị được chuyển qua $_GET
và cố gắng xóa bảng bằng cách thực hiện bob'); drop table students; --
và không hoạt động. PHP tự động thoát khỏi \'
và truy vấn có lỗi, không có hại gì được thực hiện. Cùng một vấn đề khi cố gắng tái tạo đăng nhập "tấn công" như AND WHERE 1=1
, vv
mã ví dụ:
<?php
$id = $_GET['id'];
$sql = "INSERT INTO Users (Username) VALUES ($id)";
echo $sql;
mysql_query($sql) or die(mysql_error());
Và tôi muốn vượt qua sql.php?id=1); delete from Users; --
Vậy là này một số điều đề ngày được sử dụng để áp dụng trong các ngày của PHP3 hoặc một cái gì đó, và ngày nay thậm chí người mới được bảo vệ khỏi những thứ như dấu ngoặc kép ma thuật?
Tôi đang sử dụng PHP5 trên Ubuntu.
câu hỏi của bạn vẫn còn rất có liên quan. Bạn sẽ thấy câu trả lời một số bài viết trong thẻ PHP. Ví dụ như thế này: http://stackoverflow.com/a/11908119/220060 - chúng xén lại một lần nữa. Có thể với những máy quét dễ bị tổn thương tự động này, chúng sẽ chết như ruồi. Tôi đã gặp phải thành công đầu tiên năm 2010. Trang chủ của công ty chúng tôi đã bị tấn công trong vòng vài phút sau cuộc tấn công. – nalply
@ tereško Tôi không nghĩ đây là bản sao chính xác. Câu hỏi đó đang hỏi * cách * để ngăn ngừa tiêm. Câu hỏi này là hỏi * tại sao * dấu ngoặc kép ma thuật không phải là cách để ngăn ngừa tiêm. – luiscubal