如何安全地使用 $_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_string
或 htmlspecialchars
.
什么时候应该使用 trim
或 stripslashes
函数?
我只是想保护我的网站免遭大多数 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']
来自客户端,可以包含任何内容。如果您要将它存储在数据库中或显示它,您需要像对待任何其他用户提供的输入一样对待它。
我想知道使用此代码的安全性如何。特别是 $_SERVER['REMOTE_ADDR']
和 $_SERVER['HTTP_USER_AGENT']
我一直在研究这个。 据我所知,像我在这里做的那样比较变量应该是安全的吗? 我应该只在将它们用于 运行 sql 查询或在我的页面上显示它们的内容时担心它们的值?
根据我在哪里使用它们,我应该 运行 mysqli_real_escape_string
或 htmlspecialchars
.
什么时候应该使用 trim
或 stripslashes
函数?
我只是想保护我的网站免遭大多数 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']
来自客户端,可以包含任何内容。如果您要将它存储在数据库中或显示它,您需要像对待任何其他用户提供的输入一样对待它。