Php 过滤后使用cookies运行数据库查询是否仍然容易受到SQL注入或类似攻击?
例如: 数据库连接和筛选 成功登录后设置cookie,检查cookie并每次重新更新Php 过滤后使用cookies运行数据库查询是否仍然容易受到SQL注入或类似攻击?,php,sql,cookies,Php,Sql,Cookies,例如: 数据库连接和筛选 成功登录后设置cookie,检查cookie并每次重新更新 这仍然容易受到任何类型的注入攻击吗?cookie存储在客户端的计算机上,因此不易受到攻击。所谓的“饼干中毒攻击”。所以要小心对待内容。这就是您对filter()例程所做的操作 然而,它仍然可以改进。如果您可以检查cookie是否已被修改,而不必访问您的数据库,该怎么办?这似乎比实际情况更困难 一个简单的方法是向cookie的内容添加某种校验和,这是可以检查但黑客看不到的。黑客必须首先弄清楚你在做什么,然后才能开
这仍然容易受到任何类型的注入攻击吗?cookie存储在客户端的计算机上,因此不易受到攻击。所谓的“饼干中毒攻击”。所以要小心对待内容。这就是您对filter()例程所做的操作 然而,它仍然可以改进。如果您可以检查cookie是否已被修改,而不必访问您的数据库,该怎么办?这似乎比实际情况更困难 一个简单的方法是向cookie的内容添加某种校验和,这是可以检查但黑客看不到的。黑客必须首先弄清楚你在做什么,然后才能开始更改进入SQL语句的数据。这是接受cookie中的任何内容并将其放入SQL语句中,还是只接受您可以验证为未修改的内容之间的区别。可能的重复内容
//Initialize MySQLi connection
$db = new mysqli($_CONFIG['mysql']['hostname'], $_CONFIG['mysql']['username'], $_CONFIG['mysql']['password'], $_CONFIG['mysql']['database']);
if ($db->connect_errno) {
die("MySQLi error: ".$db->connect_error);
}
//filter injections
function filter($var)
{
global $db;
return $db->real_escape_string(stripslashes(htmlspecialchars($var)));
}
if(login) {
// after successful login
$cookiehash = md5(sha1($_SESSION['user_id'] . $recentIP));
$db->query('UPDATE users SET loginHash = "'.filter($cookiehash).'" WHERE id = '.filter($_SESSION['user_id']).'') or die(mysqli_error($db));
setcookie("customCookie",$cookiehash,time()+3600*24*365,'/','.'.$_SERVER['HTTP_HOST'].'');
}
// if the cookie is set, update expiration and set session id
CheckCookieLogin() {
global $db;
if (!empty($_COOKIE['customCookie'])) {
$cookie = $_COOKIE['customCookie'];
$query = $db->query('SELECT * FROM users WHERE loginHash = "'.filter($cookie).'"');
if($query->num_rows > 0) {
$_SESSION['user_id'] = 1;
// reset expiry date
setcookie("customCookie",$cookie,time()+3600*24*365,'/','.'.$_SERVER['HTTP_HOST'].'');
}
}
}