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

发布时间 - 2026-01-10 23:07:08    点击率:

本文实例讲述了php过滤输入操作htmlentities与htmlspecialchars用法。分享给大家供大家参考,具体如下:

过滤输入 (即来自所列数据源中的任何数据)是指,转义或删除不安全的字符。在数据到达应用的存储层之前,一定要过滤输入数据。这是第一道防线。假如网站的评论表单接收html,默认情况下访客可以毫无阻拦地在评论中加入恶意的<script>标签,如下标示:

<p>
  我的测试
</p>
<script>alert(123)</script>

上面例子。如果不过滤这个评论,恶意代码会存入数据库,然后再网站的标记中渲染。

HTML

我们可以使用htmlentities或者htmlspecialchars函数来过滤html,把特殊字符转换成对应的html实体。

htmlentities这个函数转换所有含有对应“html实体”的特殊字符,比如货币表示符号欧元英镑等、版权符号等,htmlspecialchars 只是把某些特殊的字符转义了, & " ' < >

这2个函数比较傻,默认是不会转义单引号的

$str='<a href="test.html" rel="external nofollow" >\'测试页面\'</a><script>alert(213)</script>'; 
//并没有转义单引号
echo $str;
echo "<hr/>".PHP_EOL;
echo htmlentities($str);
echo "<hr/>".PHP_EOL;
echo htmlspecialchars($str);

需要设置第2个参数 ENT_QUOTES,具体可以看php手册

echo htmlentities($str,ENT_QUOTES,'UTF-8'); //单引号也转义
echo "<hr/>".PHP_EOL;
echo htmlspecialchars($str,ENT_QUOTES,'UTF-8');//单引号也转义

以上例子并不能区别出htmlentities和htmlspecialchars ,下面换上一些特殊的字符,如欧元等。htmlentities将会对此转义,htmlspecialchars却不会

echo htmlentities('€ <>"').PHP_EOL;
echo "<hr/>".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 htmlentities和htmlspecialchars 的区别  # php 去除html标记--strip_tags与htmlspecialchars的区别详解  # php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总  # PHP关于htmlspecialchars、strip_tags、addslashes的解释  # php htmlspecialchars()与shtmlspecialchars()函数的  # php htmlspecialchars加强版  # PHP htmlspecialchars() 函数实例代码及用法大全  # PHP htmlspecialchars_decode()函数用法讲解  # PHP htmlspecialchars()函数用法与实例讲解  # php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析  # 单引号  # 程序设计  # 可以用  # 表单  # 这是  # 特殊字符  # 相关内容  # 将会  # 是指  # 感兴趣  # 访客  # 给大家  # 然后再  # 或删除  # 可以使用  # 并不能  # 涉及到  # 转换成  # 更多关于  # 所述 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何为不同团队 ID 动态生成多个非值班状态按钮  如何在VPS电脑上快速搭建网站?  如何在IIS服务器上快速部署高效网站?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  简单实现Android文件上传  大同网页,大同瑞慈医院官网?  如何续费美橙建站之星域名及服务?  详解CentOS6.5 安装 MySQL5.1.71的方法  lovemo网页版地址 lovemo官网手机登录  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  jQuery validate插件功能与用法详解  如何在腾讯云免费申请建站?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何快速生成ASP一键建站模板并优化安全性?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  JavaScript常见的五种数组去重的方式  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  LinuxShell函数封装方法_脚本复用设计思路【教程】  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel如何处理表单验证?(Requests代码示例)  Android自定义控件实现温度旋转按钮效果  如何在Windows环境下新建FTP站点并设置权限?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  香港服务器如何优化才能显著提升网站加载速度?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  企业网站制作这些问题要关注  如何获取上海专业网站定制建站电话?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel如何为API编写文档_Laravel API文档生成与维护方法  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  免费网站制作appp,免费制作app哪个平台好?  如何快速搭建自助建站会员专属系统?  中国移动官方网站首页入口 中国移动官网网页登录  移动端脚本框架Hammer.js  如何用VPS主机快速搭建个人网站?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Python制作简易注册登录系统