马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 大麦田 于 2014-9-13 11:22 编辑
使用反斜线引用字符串
函数原型:string addslashes ( string $str )
函数功能:返回字符串,将字符串$str中,单引号(')、双引号(")、反斜线(\)与 NUL( NULL 字符),前面都加上了反斜线。 可用于避免数据库操作的sql语句错误。
函数参数:
函数实例:<?php
$not_escaped = "I'm fishc member.";
$escaped = addslashes($not_escaped);
echo $escaped;
echo "<br />";
?>
进阶:<?php
//我们演示一下,查询用户的信息的sql注入
$name = "小甲鱼";
$sql = "SELECT * FROM users WHERE name='{$name}' ";
//得到正确的结果是:
//SELECT * FROM users WHERE name='小甲鱼'
echo $sql.'<br />';
//sql注入示例
$name = "小甲鱼'; DELETE FROM users; '";
$sql = "SELECT * FROM users WHERE name='{$name}' ";
//得到结果是:中间就把用户数据全删掉了,然后小甲鱼要出来道歉了。
//SELECT * FROM users WHERE name='小甲鱼'; DELETE FROM users; ''
echo $sql.'<br />';
$name = "小甲鱼'; DELETE FROM users; '"; //小甲鱼\'; DELETE FROM users; \'
$name = addslashes($name);
$sql = "SELECT * FROM users WHERE name='{$name}' ";
//得到的结果: 此处查询的用户名 小甲鱼\'; DELETE FROM users; \',安全瞬间高涨。
//SELECT * FROM users WHERE name='小甲鱼\'; DELETE FROM users; \''
echo $sql.'<br />';
?>
函数注意:
1. 在PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on,
所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。
2. 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes() ,因为这样会导致双层转义。
3. 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
|