当用户访问我的站点时,我的脚本会检查2个cookie,这些cookie存储用户ID +密码的一部分,以自动登录.
可以通过cookie编辑器编辑cookie的内容,所以我想可以在写入的cookie中添加一些恶意内容吗?
我应该在我的mysql_real_escape_string
所有cookie调用中添加(或其他内容),还是有某种内置程序不允许这种情况发生?
您真正需要做的是不首先发送这些可被黑客攻击的cookie值.相反,为什么不散列用户名和密码以及(秘密)盐并将其设置为cookie值?即:
define('COOKIE_SALT', 'secretblahblahlkdsfklj'); $cookie_value = sha1($username.$password.COOKIE_SALT);
然后你知道cookie值总是一个40个字符的十六进制字符串,并且可以将用户发回的值与数据库中的任何内容进行比较,以确定它们是否有效:
if ($user_cookie_value == sha1($username_from_db.$password_drom_db.COOKIE_SALT)) { # valid } else { #not valid }
mysql_real_escape_string
对数据库进行额外的打击,BTW(很多人没有意识到它需要数据库连接并查询MySQL).
如果您无法更改应用程序并坚持使用hackable cookie值,那么执行所需操作的最佳方法是使用带有绑定参数的预准备语句.