加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL注入问题

发布时间:2020-12-13 18:21:03 所属栏目:PHP教程 来源:网络整理
导读:我最近用 PHP编写了我的网站编码,我在为查询中使用它之前清理输入的良好做法感到非常自豪.这一切都很顺利,直到我的朋友说我需要消毒我的输入.当我试图向他解释它已被消毒时,他告诉我他已经在我的数据库中的“用户”表中找到了所有内容.我不知道怎么样,所以我
我最近用 PHP编写了我的网站编码,我在为查询中使用它之前清理输入的良好做法感到非常自豪.这一切都很顺利,直到我的朋友说我需要消毒我的输入.当我试图向他解释它已被消毒时,他告诉我他已经在我的数据库中的“用户”表中找到了所有内容.我不知道怎么样,所以我想我会发布我做错了什么让我的消毒不起作用.这是他正在利用的PHP代码:
start_mysql(); // Starts the databases stuff,etc.

$id = mysql_real_escape_string($_GET['id']);
$game = mysql_query("SELECT * FROM `games` WHERE `id` = $id LIMIT 0,1");

他所做的只是更改id参数,使他能够在我的数据库上使用SQL注入.我以为mysql_real_escape_string逃脱了所有这样的角色,但显然我错了.我用一个普通的字符串做了一些测试,看看会发生什么,这就是它所说的

网址:/game.php?id =’或”=’

echo($_GET['id']); // This echo'd: ' OR '' = '
echo(mysql_real_escape_string($_GET['id'])); // This echo'd: ' OR '' = '

所以,我的简单问题是,我做错了什么?

马特,

mysql_real_escape_string()只会过滤某些字符,如果你真的想要防止注入攻击,请查看另一篇建议你使用Prepared语句的Stack Overflow文章:

Prepared Statements

PHP Manual entry on Prepared statements

编辑:还查看Slaks和Michael关于用单引号包装变量的帖子.

祝好运!

H

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读