如何安全地使用 $_SERVER['REMOTE_ADDR'] 和 $_SERVER['HTTP_USER_AGENT']

How to safely use $_SERVER['REMOTE_ADDR'] and $_SERVER['HTTP_USER_AGENT']

我想知道使用此代码的安全性如何。特别是 $_SERVER['REMOTE_ADDR']$_SERVER['HTTP_USER_AGENT']

我一直在研究这个。 据我所知,像我在这里做的那样比较变量应该是安全的吗? 我应该只在将它们用于 运行 sql 查询或在我的页面上显示它们的内容时担心它们的值?

根据我在哪里使用它们,我应该 运行 mysqli_real_escape_stringhtmlspecialchars.

什么时候应该使用 trimstripslashes 函数?

我只是想保护我的网站免遭大多数 obvious/common 方式的黑客攻击。不需要大量的保护,但我希望它至少是相当安全的!

有什么我忽略或做错的吗? 有没有任何指南可以解释其中的大部分内容?

session_start();

    if (!isset($_SESSION['logged_in'])) {
            $_SESSION['logged_in'] = false;
            $_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
            $_SESSION['user_agent'] = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
    } else {
            if ($_SESSION['ip_address'] !== $_SERVER['REMOTE_ADDR'] || ($_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT'])) {
                    session_destroy();
                    header('Location: view/index.php');
                    die();
            }
    }

$_SERVER['REMOTE_ADDR']由网络服务器创建,安全可靠。它始终只是一个数字格式的 IP 地址,您无需对其进行清理。

$_SERVER['HTTP_USER_AGENT']来自客户端,可以包含任何内容。如果您要将它存储在数据库中或显示它,您需要像对待任何其他用户提供的输入一样对待它。