时时商务社区
标题:
php过滤输入操作之htmlentities与htmlspecialchars用法分析
[打印本页]
作者:
bewin83
时间:
2018-2-14 05:28
本文实例讲述了php过滤输入操作htmlentities与htmlspecialchars用法。分享给大家供大家参考,具体如下:
过滤输入 (即来自所列数据源中的任何数据)是指,转义或删除不安全的字符。在数据到达应用的存储层之前,一定要过滤输入数据。这是第一道防线。假如网站的评论表单接收html,默认情况下访客可以毫无阻拦地在评论中加入恶意的
上面例子。如果不过滤这个评论,恶意代码会存入数据库,然后再网站的标记中渲染。
HTML
我们可以使用htmlentities或者htmlspecialchars函数来过滤html,把特殊字符转换成对应的html实体。
htmlentities这个函数转换所有含有对应“html实体”的特殊字符,比如货币表示符号欧元英镑等、版权符号等,htmlspecialchars 只是把某些特殊的字符转义了, & " '
这2个函数比较傻,默认是不会转义单引号的
$str='
\'测试页面\'
';
//并没有转义单引号
echo $str;
echo "".PHP_EOL;
echo htmlentities($str);
echo "".PHP_EOL;
echo htmlspecialchars($str);
需要设置第2个参数 ENT_QUOTES,具体可以看php手册
echo htmlentities($str,ENT_QUOTES,'UTF-8'); //单引号也转义
echo "".PHP_EOL;
echo htmlspecialchars($str,ENT_QUOTES,'UTF-8');//单引号也转义
以上例子并不能区别出htmlentities和htmlspecialchars ,下面换上一些特殊的字符,如欧元等。htmlentities将会对此转义,htmlspecialchars却不会
echo htmlentities('? "').PHP_EOL;
echo "".PHP_EOL;
echo htmlspecialchars('? "').PHP_EOL; //?没有转义
结论:
做一般表单提交的时候完全可以用strip_tags去除html标签,如果涉及到富文本编辑器需要保留html标签,可以用htmlspecialchars对提交数据进行过滤。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《
php程序设计安全教程
》、《
php安全过滤技巧总结
》、《
PHP运算与运算符用法总结
》、《
PHP网络编程技巧总结
》、《
PHP基本语法入门教程
》、《
php面向对象程序设计入门教程
》、《
php字符串(string)用法总结
》、《
php+mysql数据库操作入门教程
》及《
php常见数据库操作技巧汇总
》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
php htmlentities和htmlspecialchars 的区别
php 字符过滤类,用于过滤各类用户输入的数据
php htmlspecialchars加强版
php HtmlReplace输入过滤安全函数
PHP开发不能违背的安全规则 过滤用户输入
php 对输入信息的进行安全过滤的函数代码
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
php 去除html标记--strip_tags与htmlspecialchars的区别详解
php中filter函数验证、过滤用户输入的数据
PHP关于htmlspecialchars、strip_tags、addslashes的解释
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
php htmlentities()函数的定义和用法
欢迎光临 时时商务社区 (http://bbs.4435.cn/)
Powered by Discuz! X3.2