大麦田 发表于 2014-9-12 19:45:25

[PHP API档案] addslashes

本帖最后由 大麦田 于 2014-9-13 11:22 编辑

使用反斜线引用字符串

函数原型:
string addslashes( string $str)
函数功能:
返回字符串,将字符串$str中,单引号(')、双引号(")、反斜线(\)与 NUL( NULL字符),前面都加上了反斜线。 可用于避免数据库操作的sql语句错误。
函数参数:

参数 含义
$str 要转义的字符


函数实例:
<?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()进行检测。












鱼C侦探团

vank 发表于 2015-5-26 06:01:11

谢谢版主分享~
页: [1]
查看完整版本: [PHP API档案] addslashes