找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1938|回复: 0
打印 上一主题 下一主题

php过滤输入操作之htmlentities与htmlspecialchars用法分析

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:28:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了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()函数的定义和用法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端