当前位置: 首页> 游戏> 游戏 > 太原企业网站搭建_企业信用网查询_百度客服电话人工服务热线_seo研究中心qq群

太原企业网站搭建_企业信用网查询_百度客服电话人工服务热线_seo研究中心qq群

时间:2025/7/10 1:54:33来源:https://blog.csdn.net/2401_88220102/article/details/144404582 浏览次数:0次
太原企业网站搭建_企业信用网查询_百度客服电话人工服务热线_seo研究中心qq群

从上面XSS实例以及之前文章的介绍我们知道XSS漏洞的起因就是没有对用户提交的数据进行严格的过滤处理。因此在思考解决XSS漏洞的时候,我们应该重点把握如何才能更好的将用户提交的数据进行安全过滤。

2|0  html实体

             什么是html实体?

        在html中有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的。要在HTML中显示(<)这个字符,我们就必须使用实体字符。

        html实体的存在是导致XSS漏洞的主要原因之一。

       因此我们需要将这些实体全部转换为相应的实体编号。

显示结果

描述

实体名称

空格

&nbsp;

小于号

&lt;

大于号

&gt;

&

和号

&amp;

"

引号

&quot;

'

撇号 

&apos; (IE不支持)

3|0     HTML Encode

             用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处理。

             在PHP中已经存在这样子功能的函数,即是htmlentities($str)函数。

            与之相反的就是html_entity_decode($str)函数,它将实体名称转换为相应的符号。

4|0  修复漏洞方针

        【不相应用户提交的数据,过滤过滤过滤!】

          1、将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到 cookie了.

          2、表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。

          4、对数据进行Html Encode 处理

          5、过滤或移除特殊的Html标签, 例如: <script>, <iframe> , &lt; for <, &gt; for >, &quot for

          6、过滤JavaScript 事件的标签。例如 "οnclick=", "onfocus" 等等。

【特别注意:】

在有些应用中是允许html标签出现的,甚至是javascript代码出现。因此我们在过滤数据的时候需要仔细分析哪些数据是有特殊要求(例如输出需要html代码、javascript代码拼接、或者此表单直接允许使用等等),然后区别处理!

5|0  PHP中的相应函数

【详细看PHP手册】

这里可能不全,想了解更多的看手册

strip_tags($str, [允许标签])  

从字符串中去除 HTML 和 PHP 标记

htmlentities($str)

转义html实体

html_entity_decode($str)

反转义html实体

addcslashes($str, ‘字符’)

给某些字符加上反斜杠

stripcslashes($str)

去掉反斜杠

addslashes ($str )

单引号、双引号、反斜线与 NULL加反斜杠

stripslashes($str)

去掉反斜杠

htmlspecialchars()

特殊字符转换为HTML实体

htmlspecialchars_decode()  

将特殊的 HTML 实体转换回普通字符

6|0  数据过滤类

 
<?php
class XSS
{/*** @desc 过滤数据** @param $data string|array 输入数据* @param $low  bool      是否采用更为严格的过滤** @return 返回过滤的数据*/public function clean_xss($data, $low = False){#字符串过滤if (! is_array ( $data )){$data = trim ( $data );              #字符两边的处理$data = strip_tags ( $data );        #从字符串中去除 HTML 和 PHP 标记$data = htmlspecialchars ( $data );  #特殊字符转换为HTML实体if ($low){return $data;}#匹配换空格$data = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $data );$no = '/%0[0-8bcef]/';$data = preg_replace ( $no, '', $data );$no = '/%1[0-9a-f]/';$data = preg_replace ( $no, '', $data );$no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';$data = preg_replace ( $no, '', $data );return $data;}#数组过滤$arr=array();foreach ($data as $k => $v){$temp=$this->clean_xss($v);$arr[$k]=$temp;}return $arr;}}
#测试测试
session_start();
$_SESSION['xss']='xssss';
$xss=new XSS();
#测试字符串
$str = "<script>alert(document.cookie)</script>";
echo $str;
$str2=$xss->clean_xss($str);
echo $str2;
echo "<hr/>";
#测试数组
$arr=array("<script>alert(document.cookie)</script>","<script>alert(document.cookie)</script>","<script>alert(document.cookie)</script>");
echo "<pre>";
print_r($arr);
echo "</pre>";
$arr2=$xss->clean_xss($arr);
echo "<pre>";
print_r($arr2);
echo "</pre>";die;
?>

关键字:太原企业网站搭建_企业信用网查询_百度客服电话人工服务热线_seo研究中心qq群

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: