文章分类 | 软件分类 | 最新软件 | 杀毒软件 | 实用软件  | MTV下载  | 设为首页 |
  | 下载分类 | 最近更新
您的位置: 首页 >> 文章首页 >> 技术开发 >> PHP 学院 >> PHP技巧 >>  
PHP技巧点击TOP10
·php与XML、XSLT、Mysql的结合运用,代码篇2006-2-10 14:31:20
·轻型数据库SQLite结合PHP的开发2006-2-10 12:25:15
·用PHP与XML联手进行网站编程2006-2-10 14:43:33
·php调用mysql存储过程和函数的方法2006-2-10 13:39:52
·使用PHP往Windows系统中添加用户2006-2-10 12:25:13
·编译php的配置参数2006-2-10 12:48:43
·PHP与SQL注入攻击[二]2006-2-10 13:02:42
·有关在Windows下配置PHP+Apache+Optimizer失败的问题解决方案2006-2-10 13:02:56
·PHP与SQL注入攻击[一]2006-2-10 13:02:41
·用php或js获取图片大小,高宽尺寸.2006-2-10 12:58:19
PHP 学院点击TOP10
·利用PHP动态生成VRML网页2006-2-9 14:42:54
·PHP&MYSQL服务器配置说明2006-2-5 12:26:12
·分页显示Oracle数据库记录的类之一2006-2-5 23:51:32
·编写PHP的安全策略2006-2-9 16:37:13
·使用OOP技术来优化PHP应用程序2006-2-9 16:33:27
·967 个函式2006-2-5 13:59:40
·Zend Studio 5 Beta2006-2-10 12:48:42
·一个很方便的 XML 类!!原创的噢2006-2-6 6:54:26
·JAVA/JSP学习系列之七2006-2-6 7:40:36
·一个odbc连mssql分页的类2006-2-5 14:26:46

 

PHP与SQL注入攻击[二]
作者:我去下载           时间:2006-2-10 13:02:42



PHP与SQL注入攻击[二]

Magic Quotes

上文提到,SQL注入主要是提交不安全的数据给数据库来达到攻击目的。为了防止SQL注
入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全
上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc
选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加上反斜杠\。

但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许
多服务器上Magic Quotes并没有被启用。所以,我们还需要使用其它多种方法来防止SQL注
入。

许多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有一个叫mysql_real_escape_string()的函数,可将特殊字符和可能引起数据库操作出错的字符转义。

参考:
http://cn2.php.net/mysql_real_escape_string
有兴趣可以看看下面的评论:)

看这段代码:

//如果Magic Quotes功用启用
if (get_magic_quotes_gpc()) {
$name = stripslashes($name);
}else{
$name = mysql_real_escape_string($name);
}

mysql_query(“SELECT * FROM users WHERE name=’{$name}’”);

注意,在我们使用数据库所带的功能之前要判断一下Magic Quotes是否打开,就像上例
中那样,否则两次重复处理就会出错。如果MQ已启用,我们要把加上的\去掉才得到真实
数据。

除了对以上字符串形式的数据进行预处理之外,储存Binary数据到数据库中时,也要注
意进行预处理。否则数据可能与数据库自身的存储格式相冲突,引起数据库崩溃,数据
记录丢失,甚至丢失整个库的数据。有些数据库如PostgreSQL,提供一个专门用来编码
二进制数据的函数pg_escape_bytea(),它可以对数据进行类似于Base64那样的编码。

如:
// for plain-text data use:
pg_escape_string($regular_strings);

// for binary data use:
pg_escape_bytea($binary_data);

另一种情况下,我们也要采用这样的机制。那就是数据库系统本身不支持的多字节语言
如中文,日语等。其中有些的ASCII范围和二进制数据的范围重叠。
不过对数据进行编码将有可能导致像LIKE abc% 这样的查询语句失效。

分页:
相关文章:
Copyright© 2005-2006 wqxz.com, All Rights Reserved. 购买虚拟主机请与本站联系