前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP安全函数过滤实例

PHP安全函数过滤实例

作者头像
行云博客
发布2020-07-13 10:43:55
4510
发布2020-07-13 10:43:55
举报
文章被收录于专栏:行云博客行云博客

htmlentities() 函数

把字符转换为 HTML 实体

代码语言:javascript
复制
<?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实体)

代码语言:javascript
复制
&lt;script&gt;alert(1);&lt;/scrpit&gt;
htmlspecialchars() 函数

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

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

代码语言:javascript
复制
&quot;&lt;script&gt;alert(1);&lt;/scrpit&gt;
str_ireplace() 函数

替换字符串中的一些字符(不区分大小写)

代码语言:javascript
复制
 <?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也是一样的结果。

代码语言:javascript
复制
<scr_ipt>alert(1);</scrpit>
str_replace() 函数

替换字符串中的一些字符(区分大小写)

与str_ireplace() 函数一样,本函数区分大小写,这里不做过多解释

strip_tags() 函数

剥去字符串中的 HTML、XML 以及 PHP 的标签

代码语言:javascript
复制
<?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标签都被过滤了

代码语言:javascript
复制
alert(1);

目前只测试了这几种,更安全的方法还是推荐用正则表达式以及前端JavaScript第一次过滤,后端PHP再次过滤及加密来保证安全。如有错误,欢迎指出!

本文已放博客: 行云博客

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • htmlentities() 函数
    • htmlspecialchars() 函数
      • str_ireplace() 函数
        • str_replace() 函数
          • strip_tags() 函数
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档