首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL错误的漏洞

问MySQL错误的漏洞
EN

Stack Overflow用户
提问于 2011-12-28 11:13:19
回答 2查看 381关注 0票数 0

我对PHP的安全性一无所知,但是如果我在我的POST方法form中添加一个'到input。

我收到以下消息:

代码语言:javascript
复制
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /usr/local/www/login.php

这是SQL注入吗?如果是这样,它怎么会被“黑客”滥用呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-28 11:16:26

这意味着您很容易受到SQL注入的攻击,并且您的代码没有对错误进行足够的检查。

一个绝对简单的“安全”代码是:

代码语言:javascript
复制
<?php
... connect to db ...
$stringval = mysql_real_escape_string($_GET['param']);
$sql = "SELECT somefield FROM sometable WHERE otherfield='$stringval'";
$result = mysql_query($sql) or die(mysql_error());

更好的做法是停止使用mysql函数,并切换到PDO和参数化查询。它们会自动为您处理注入问题。

错误消息的根本原因是查询导致了语法错误。当查询完全失败时,mysql_query()会返回一个布尔值FALSE,而不是一个语句句柄。

由于缺少任何类型的错误检查,您盲目地接受布尔值false并将其传递给fetch函数,该函数理所当然地抱怨您没有提供结果句柄。

票数 4
EN

Stack Overflow用户

发布于 2011-12-28 11:15:41

您应该在将任何用户输入传递给mysql之前对其进行转义。在将任何用户输入添加到查询之前,使用PHP函数mysql_real_escape_string()对其进行转义。这是mysql_real_escape_string()的PHP手册的链接

mysqli :是的,其他人所说的使用预准备语句或比使用mysqli要好得多。

下面是我找到的一些关于MySQL注入的链接:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8651454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档