PHP安全函数过滤实例

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实体)

&lt;script&gt;alert(1);&lt;/scrpit&gt;

htmlspecialchars() 函数

把一些预定义的字符转换为 HTML 实体

  • & (和号)成为 &amp;
  • " (双引号)成为 &quot;
  • ’ (单引号)成为 ’
  • < (小于)成为 &lt;
  • > (大于)成为 &gt;
<?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>,可以发现预定义的字符被转义

&quot;&lt;script&gt;alert(1);&lt;/scrpit&gt;

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再次过滤及加密来保证安全。如有错误,欢迎指出!

本文已放博客: 行云博客

猜你喜欢

转载自blog.csdn.net/qq_41679358/article/details/107229701