PHP与SQL注入攻击[二]

叫我德山哥

叫我德山哥

2016-01-29 15:06

PHP与SQL注入攻击[二],PHP与SQL注入攻击[二]
 


PHP与SQL注入攻击[二]

Magic Quotes

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

上文提到,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已启用,我们要把加上的去掉才得到真实
数据。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

除了对以上字符串形式的数据进行预处理之外,储存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% 这样的查询语句失效。

 
展开更多 50%)
分享

猜你喜欢

PHP与SQL注入攻击[二]

PHP
PHP与SQL注入攻击[二]

PHP与SQL注入攻击[一]

PHP
PHP与SQL注入攻击[一]

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

php中如何避免sql注入攻击

PHP
php中如何避免sql注入攻击

SQL注入攻击通杀

SQLServer
SQL注入攻击通杀

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

防范SQL注入式攻击

SQLServer
防范SQL注入式攻击

SQL 注入式攻击的本质

编程语言 网络编程
SQL 注入式攻击的本质

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PHP开发中session应用详解

PHP开发中session应用详解

MySQL安全问题(匿名用户)的一点心得

MySQL安全问题(匿名用户)的一点心得
下拉加载更多内容 ↓