Tôi đang cố gắng tìm ra cách để dễ dàng xóa sạch tất cả các biến POST và GET bằng một hàm duy nhất. Dưới đây là các chức năng chính:
//clean the user's input
function cleanInput($value, $link = '')
{
//if the variable is an array, recurse into it
if(is_array($value))
{
//for each element in the array...
foreach($value as $key => $val)
{
//...clean the content of each variable in the array
$value[$key] = cleanInput($val);
}
//return clean array
return $value;
}
else
{
return mysql_real_escape_string(strip_tags(trim($value)), $link);
}
}
Và đây là đoạn code mà sẽ gọi nó là:
//This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
$_POST[$key] = cleanInput($value, $link);
}
//This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
$_GET[$key] = cleanInput($value, $link);
}
Đối với tôi điều này dường như nó nên làm việc. Nhưng đối với một số lý do nó sẽ không trả lại mảng từ một số hộp kiểm tôi có trong một hình thức. Họ tiếp tục trống rỗng.
Tôi đã kiểm tra mã của mình mà không có hàm ở trên và hoạt động tốt, tôi chỉ muốn thêm chút bảo mật trong đó.
Cảm ơn!
Bạn nên tránh cố gắng vệ sinh mọi thứ cho mọi ngữ cảnh. Điều đó chỉ cản trở ứng dụng của bạn và khiến bạn khó bảo mật hơn khi bạn muốn tạo lại chức năng bị mất. Đây là một lý do hợp lệ tại sao magic_quotes bị vô hiệu hóa. http://php.net/manual/en/security.magicquotes.php Một cái gì đó bạn đang tái tạo trong một ý nghĩa ở đây. Đầu vào cần được khử trùng cho ứng dụng bạn đang gửi đến. Nếu bạn đang gửi tới trình duyệt qua HTTP, hãy vệ sinh nó cho HTTP và HTML. Nếu bạn đang gửi nó đến SQL DB, hãy khử trùng nó cho SQL. – bucabay
xin lỗi, tôi có nghĩa là không được chấp nhận: http://php.net/manual/en/security.magicquotes.php – bucabay
Cảm ơn bạn đã giúp đỡ/tư vấn tất cả! Có vẻ như tôi cần phải suy nghĩ lại quá trình của mình. :-) – tscully