htmlentities() 函数
把字符转换为 HTML 实体
<?php
$a = $_GET[fname];
$a1 = htmlentities($a);
echo '
<form action="form.php" method="get" align="center">
<h3>过滤测试</h3>
<input type="text" name="fname" value="'.$a1.'">
<br/>
<input type="submit" value="提交">
<h3>'.$a1.'</h3>
</form>';
?>
表单输入<script>alert(1);</script>后,可以发现<>被转义(当然还可以输入其他的,只要是字符就会转变成HTML实体)
<script>alert(1);</scrpit>
htmlspecialchars() 函数
把一些预定义的字符转换为 HTML 实体
- & (和号)成为 &
- " (双引号)成为 "
- ’ (单引号)成为 ’
- < (小于)成为 <
- > (大于)成为 >
<?php
$a = $_GET[fname];
$a1 = htmlspecialchars($a);
echo '
<form action="form.php" method="get" align="center">
<h3>过滤测试</h3>
<input type="text" name="fname" value="'.$a1.'">
<br/>
<input type="submit" value="提交">
<h3>'.$a1.'</h3>
</form>';
?>
表单输入"<script>alert(1);</scrpit>,可以发现预定义的字符被转义
"<script>alert(1);</scrpit>
str_ireplace() 函数
替换字符串中的一些字符(不区分大小写)
<?php
$a = $_GET[fname];
$a1 = str_ireplace("script", "scr_ipt", $a);
echo '
<form action="form.php" method="get" align="center">
<h3>过滤测试</h3>
<input type="text" name="fname" value="'.$a1.'">
<br/>
<input type="submit" value="提交">
<h3>'.$a1.'</h3>
</form>';
?>
表单输入<script>alert(1);</script>后,可以发现,script已经被过滤成scr_ipt了(当然你还可以设置过滤掉其他字符,这只是其中一个例子)
PS:该函数不区分大小写,所以输入SCRIPT也是一样的结果。
<scr_ipt>alert(1);</scrpit>
str_replace() 函数
替换字符串中的一些字符(区分大小写)
与str_ireplace() 函数一样,本函数区分大小写,这里不做过多解释
扫描二维码关注公众号,回复:
11462681 查看本文章
strip_tags() 函数
剥去字符串中的 HTML、XML 以及 PHP 的标签
<?php
$a = $_GET[fname];
$a1 = strip_tags($a);
echo '
<form action="form.php" method="get" align="center">
<h3>过滤测试</h3>
<input type="text" name="fname" value="'.$a1.'">
<br/>
<input type="submit" value="提交">
<h3>'.$a1.'</h3>
</form>';
?>
表单输入<script>alert(1);</script>后,可以发现,HTML标签都被过滤了
alert(1);
目前只测试了这几种,更安全的方法还是推荐用正则表达式以及前端JavaScript第一次过滤,后端PHP再次过滤及加密来保证安全。如有错误,欢迎指出!
本文已放博客: 行云博客