php htmlentities函数讲解及使用实例
时间:2016-06-27
php htmlentities用于接受一个字符串并将该字符串转换为对应的HTML实体,本文章通过实例向大家讲解php htmlentities函数的使用方法和需要注意的地方,需要的朋友可以参考一下。
比如我们对字符串"<script>"使用htmlentities函数,字符串"<script>"将被转化为"<script>",将"<"和“>”转换为HTML实体,可以防止浏览器将它们作为HTML元素的一部分被解释或运行(经常使用在用户提交表单数据的时候)。
可能上面解释起来比较难得理解,但是如果你能理解浏览器在不同阶段的工作原理,那么就非常简单了。下面让我们来看一下htmlentities在三个不同阶段(php阶段、原始HTML格式阶段和WEB浏览器阶段)字符串是如何改变的。
// An imaginary article submission from a bad user
// it will redirect anyone to example.com if the code is run in a browser
$userInput = "I am going to hax0r your site, hahaha!
<script type='text/javascript'>
window.location = 'http://www.example.com/'
</script>'";
//Lets make it safer before we use it
$userInputEntities = htmlentities($userInput);
//Now we can display it
echo $userInputEntities;
上述脚本的HTML输出如下所示
安全原始的HTML代码:(如果你查看HTML源码)
I am going to hax0r your site, hahaha!
<script type='text/javascript'>
window.location = 'http://www.example.com/'
</script>'
如果我们没有使用htmlentities函数将HTML代码转换成安全的实体,那么原始的HTML代码将运行并跳转到http://www.example.com/页面
在什么时候需要使用htmlentities
任何时候,你允许用户提交内容到你的网站,其他游客可以看到,你应该考虑取消让他们使用HTML的能力。虽然这将消除很多很酷的事情,你的用户可以做的,喜欢做大量定制的内容,它会阻止你的网站从大量的普通攻击。随着一些自定义编码你可以从运行删除特定的标签,但这超出了本课的范围。
请记住,这允许用户提交内容到您的网站时,您也给他们访问你的网站。请确保您采取适当的预防措施。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Anaconda使用命令
- 最大连续子数组
- markdown编辑器实现代码高亮
- LeetCode - 198 简单动态规划 打家劫舍
- Jaskson精讲第7篇-JsonTypeInfo注解在类继承关系下的使用
- 《剑指Offer 1.二维数组中的查找》2019-03-25
- Elasticsearch:Dynamic mapping
- 设计模式《单例设计模式》
- 《0-1 背包问题》
- 使用分治思想 求数组中的最大和最小值
- python 入门笔记[语法基础(下)]
- Java 成员变量和属性的区别
- xmuC语言程序实践week 1 大作业
- 《01-背包问题-点菜》
- 模拟赛 2018 Benelux Algorithm Programming Contest (BAPC 18)(部分题)