PHP中addslashes()和htmlspecialchars() 函数的区别及应用
程序员文章站
2022-06-29 08:17:11
addslashes()防sql注入: 定义如下: addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL 提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。 用法如下: htmlspecial ......
addslashes()防sql注入:
定义如下:
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- null
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
用法如下:
<?php $str = "who's peter griffin?"; echo $str . " this is not safe in a database query.<br>"; echo addslashes($str) . " this is safe in a database query."; ?>
// 输出:
who's peter griffin? this is not safe in a database query.
who\'s peter griffin? this is safe in a database query.
htmlspecialchars()过滤xss问题:
定义如下:
htmlspecialchars() 函数把预定义的字符转换为 html 实体。
预定义的字符是:
- & (和号)成为 &
- " (双引号)成为 "
- ' (单引号)成为 '
- < (小于)成为 <
- > (大于)成为 >
提示:如需把特殊的 html 实体转换回字符,请使用 htmlspecialchars_decode() 函数。
用法如下:
<?php $str = "bill & 'steve'"; echo htmlspecialchars($str, ent_compat); // 只转换双引号 echo "<br>"; echo htmlspecialchars($str, ent_quotes); // 转换双引号和单引号 echo "<br>"; echo htmlspecialchars($str, ent_noquotes); // 不转换任何引号 ?>
// 输出
bill & 'steve'
bill & 'steve'
bill & 'steve'
addslashes()与htmlspecialchars()的区别:
除了两个函数的转义方式不同外,它们的使用也不同。
addslashes()通过用于防止sql语句注入,在执行sql语句前对通过get、post和cookie传递来的参数中的单引号,双引号,\ 和null进行转义。
但sql执行成功后,插入到数据库中的数据是不带有转义字符\的。这是如果插入到数据库中的是一些js脚本,当这些脚本被读取出来时还是会被执行。
这是我们可对读取出来的数据使用htmlspecialchars()进行过滤,避免执行被注入的脚本。
参考文章:
下一篇: python__005
推荐阅读
-
详解PHP中strlen和mb_strlen函数的区别
-
php中==和===的含义及区别
-
php中get_cfg_var()和ini_get()的用法及区别
-
解析php addslashes()与add*es()函数的区别和比较
-
PHP函数addslashes和mysql_real_escape_string的区别
-
php中echo()和print()、require()和include()等易混淆函数的区别
-
PHP获取数组中某元素的位置及array_keys函数应用
-
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
-
PHP中函数rand和mt_rand的区别比较
-
SQL中CUBE和ROLLUP函数的用法及区别