当前位置:  开发笔记 > 编程语言 > 正文

我应该mysql_real_escape_string我从用户那里得到的所有cookie,以避免在php中注入mysql?

如何解决《我应该mysql_real_escape_string我从用户那里得到的所有cookie,以避免在php中注入mysql?》经验,为你挑选了1个好方法。

当用户访问我的站点时,我的脚本会检查2个cookie,这些cookie存储用户ID +密码的一部分,以自动登录.

可以通过cookie编辑器编辑cookie的内容,所以我想可以在写入的cookie中添加一些恶意内容吗?

我应该在我的mysql_real_escape_string所有cookie调用中添加(或其他内容),还是有某种内置程序不允许这种情况发生?



1> joelhardi..:

真正需要做的是不首先发送这些可被黑客攻击的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值,那么执行所需操作的最佳方法是使用带有绑定参数的预准备语句.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有