声明:
由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。
笔记内容来源于各类网课
一、概述
XSS Filter过滤器。
二、XSS过滤器
2.1 htmlspecialchars()函数
htmlspecialchars()函数把预定义的字符转换为HTML实体。
预定义的字符是:
- &(和号)成为&
- ”(双引号)成为"
- '(单引号)成为'
- <(小于)成为<
- >(大于)成为>
htmlspecialchars(string,flags character-set,double encode)
<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>
参考链接:https://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
2.2 htmlentities()函数
这个函数对于过滤用户输人的数据非常有用。它会将一些特殊字符转换为HTML实体。例如,用户输入<时,就会被该函数转化为HTML实体< (<) ,输入>就被转为实体>.
htmlentities(string flags,character-set,double_ encode)
<?php
$str = "<? W3S?h????>";
echo htmlentities($str);
?>
参考链接:
- https://www.w3school.com.cn/php/func_string_htmlentities.asp
- https://www.w3school.com.cn/html/html_entities.asp
2.3 strip_ tags() 函数
strip_ tags() 函数剥去字符串中的HTML、XML以及PHP的标签
注释:该函数始终会剥离HTML注释。这点无法通过allow参数改变。
注释:该函数是二进制安全的。
strip_tags(string,allow)
<?php
echo strip_tags("Hello <b>world!</b>");
?>
参考链接: https://www.w3school.com.cn/php/func_string_strip_tags.asp
2.4 自定义XSS Filter
类似如下的。
一般通过正则表达式实现自定义过滤。