Thực ra, tắt báo giá kỳ diệu.
Trong PHP, nơi đó là, các bộ lọc sử dụng thích hợp:
$inUser = $_POST['user'];
$outUser = filter_var($inUser, FILTER_SANITIZE_STRING);
lọc loại bỏ các thẻ HTML và thoát khỏi nhân vật khác nhau.
Bên cạnh đó, bạn có thể cho cơ sở dữ liệu của bạn thoát khỏi điều đó cho bạn:
$inUser = $_POST['user'];
$outUser = mysqli_real_escape_string($conn, $inUser);
này thoát MySQL ký tự đặc biệt cụ thể như dấu ngoặc kép, dấu nháy đơn vv
Cuối cùng, bạn nên sử dụng các truy vấn tham số :
$sql = "SELECT user FROM table WHERE user = ?";
$stmt = $pdo->prepare($sql);
$params = array($outUser);
$stmt->execute($params);
Truy vấn tham số tự động thêm dấu ngoặc kép xung quanh chuỗi, v.v ... và có các hạn chế khác khiến cho việc tiêm SQL thậm chí còn di chuyển nhiều hơn fficult.
Tôi sử dụng cả ba, theo thứ tự đó.
Nguồn
2010-03-17 22:36:06
Có lý do nào khiến bạn phản đối việc sử dụng mysql_real_escape_string không? –
Dunno nơi bạn đã nhận được nó, nhưng sprintf thoát không có gì. –
ACtually đây là một phần của nhiệm vụ cho việc tìm kiếm tiêm sql. Tôi sao chép kịch bản trong địa phương của tôi và đã thử tất cả các tiêm sql bình thường $ a = sprintf ("chọn người dùng từ bảng nơi người dùng = '% s'", $ _POST ["người dùng"]); echo $ a Tôi tiếp tục nhận được dấu trích dẫn với \. Có điều gì đó ở giữa có thể thoát khỏi dấu ngoặc kép không? – user294924