这样可以避免注入请求吗

Is this good to avoid injection requests

我必须在请求参数中获取 IP 和 URL,我需要特别避免从 url 字符串注入,这是我的代码:

if(filterValidIp($ip) && filterValidUrl($url)) {
    //it's ok 
    //code....
}

url的函数:

function filterValidUrl($s) {
    $s = trim($s);
    $valid = filter_var($s, FILTER_VALIDATE_URL);
    if(!$valid === false) {
        return true;
    }
    return false;
}

url:

?url=http://google.com?id=ss'+&ip=127.0.0.1

通过有效

您提供的代码验证 URL。

如果您打算将其存储在 DBMS 中,您还应该使用 mysqli::real_escape_string or PDO::quote

对其进行转义

您可能还想对它进行清理,尤其是当您将它展示给毫无戒心的网站访问者时。您可以使用 filter_var($s, FILTER_SANITIZE_URL).

来做到这一点

请记住,不受信任的人可以将恶意文本字符串输入网站。