在开发一个应用软件的时候,安全性其实一直都是一个平时见不到,但是一旦出现就非常要命的问题,在软件开发中比较常见的就是XSS(跨站脚本攻击),是一种常见的网络安全漏洞,攻击者通过在网页中注入恶意脚本,当其他用户浏览该页面时,这些脚本会在用户的浏览器中执行。XSS攻击通常分为三类:反射型(恶意脚本来自当前HTTP请求)、存储型(恶意脚本被保存到服务器数据库中)和DOM型(通过修改页面DOM树触发)。攻击者可利用XSS窃取用户Cookie、会话令牌等敏感信息,篡改网页内容,甚至进行钓鱼欺诈。
那么如何才能防御这种网络攻击呢,在PHP中htmlspecialchars函数就是抵御这类攻击的核心方法。
htmlspecialchars的核心功能
htmlspecialchars()函数将HTML中的特殊字符转换为对应的HTML实体,使浏览器将这些字符识别为普通文本而非可执行代码:
他会把字符进行转换,转换规则:
< 转换为 <
> 转换为 >
" 转换为 "
' 转换为 ' (当使用ENT_QUOTES时)
& 转换为 &
这样转换之后带代码,通过特殊字符实体化之后,内容始终被解释为文本数据而非可执行代码,这样就没有办法通过这样的方式来攻击我们的程序。
那么必须使用htmlspecialchars的场景有哪些呢?
1. 用户生成内容输出
当显示用户提交的文本(如评论、留言、用户名)时,必须使用htmlspecialchars:
2. 表单值回显
在表单提交后回显用户输入时,防止恶意脚本执行:
3. 动态生成HTML属性
当变量值用于HTML属性时,防范属性注入攻击:
由此可以得到一些结论,在将任何不可信数据输出到HTML上下文时,必须使用htmlspecialchars进行转义