比如我们对字符串"< >"使用htmlentities函数,字符串"< >"将被转化为"< >",将"<"和“>”转换为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!
< type=\'text/ \'>
window.location = \'http://www.example.com/\'
</ >\'\";
//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!
< type=\'text/ \'>
window.location = \'http://www.example.com/\'
</ >\'
如果我们没有使用htmlentities函数将HTML代码转换成安全的实体,那么原始的HTML代码将运行并跳转到http://www.example.com/页面
在什么时候需要使用htmlentities
任何时候,你允许用户提交内容到你的网站,其他游客可以看到,你应该考虑取消让他们使用HTML的能力。虽然这将消除很多很酷的事情,你的用户可以做的,喜欢做大量定制的内容,它会阻止你的网站从大量的普通攻击。随着一些自定义编码你可以从运行删除特定的标签,但这超出了本课的范围。
请记住,这允许用户提交内容到您的网站时,您也给他们访问你的网站。请确保您采取适当的预防措施。
继续阅读与本文标签相同的文章
下一篇 :
MVC设计模式在安卓编程中的应用
-
相继表态,意、英、德欧洲三国皆希望与华为合作,谷歌也不例外
2026-05-14栏目: 教程
-
中国第4大运营商来袭,携号转网套路多,移不动联不通信不过拜拜
2026-05-14栏目: 教程
-
美国让华为更强大,9个月入账6千亿增速超2成,5G合同已签60多份
2026-05-14栏目: 教程
-
未来几年,这4个大学专业最吃香,前景广阔堪称铁饭碗!
2026-05-14栏目: 教程
-
这间屋子没有电话
2026-05-14栏目: 教程
