zoukankan      html  css  js  c++  java
  • 跨站脚本攻击XXS(Cross Site Scripting)修复方案

    今天突然发现,网站被主页莫名奇妙的出现了陌生的广告。

    通过排查发现是跨站脚本攻击XXS(Cross Site Scripting)。以下为解决方案。

    漏洞类型: Cross Site Scripting 漏洞描述:跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。 恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容, 使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,使用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。

    1. <strong>漏洞详情:</strong>参数: s, 可被注入:
    2. {"assertList":[{"express":"htmlscripttext","source":"","val":"8976","var":"BODY"}],"inputIndex":4,"lockKey":"${FILENAME}${ARGNAME}101_para_reflect_xss","message":"para_reflect_xss","otherProperty":{},"pluginName":"","postBody":"","requestHeaders":{"Accept":"*/*","Connection":"keep-alive","Content-Type":"text/html","Host":"www.neterwork.com","Referer":"http://www.zihao123.com/","User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;Alibaba.Security.Heimdall.937988)"},"ruleItemName":"para_reflect_xss","ruleName":"sts"}
    3. POC重现:http://www.zihao123.com/?s=

    修复方案:

    一:避免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤 ,可以利用下面这些函数对出现xss漏洞的参数进行过滤

    1. 1.PHPhtmlentities()或是htmlspecialchars()。
    2. 2.Pythoncgi.escape()。
    3. 3.ASPServer.HTMLEncode()。
    4. 4.ASP.NETServer.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
    5. 5.Javaxssprotect(Open Source Library)。
    6. 6.Node.jsnode-validator

    二:使用开源的漏洞修复插件。

    实例:

    避免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤,许多语言都有提供对HTML的过滤: 可以利用下面这些函数对出现xss漏洞的参数进行过滤:

    1. PHPhtmlentities()或是htmlspecialchars()。
    2. Pythoncgi.escape()。
    3. ASPServer.HTMLEncode()。
    4. ASP.NETServer.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
    5. Javaxssprotect(Open Source Library)。
    6. Node.jsnode-validator

    ASP漏洞代码示例:

    1. &lt;%
    2. Dim param
    3. Set param=Request.QueryString(“dd”)
    4. response.write param
    5. %&gt;

    修复范例:

    1. &lt;%
    2. Dim param
    3. Set param=Request.QueryString(“dd”)
    4. response.write Server.HTMLEnCode(param)
    5. %&gt;

    PHP漏洞代码示例:

    1. &lt;?php
    2. $aa=$_GET['dd'];
    3. echo $aa.”123″;
    4. ?&gt;
    5. <strong>修复范例:</strong>
    1. &lt;?php
    2. $aa=$_GET['dd'];
    3. echo htmlspecialchars($aa).”123″;
    4. ?&gt;
  • 相关阅读:
    QT 读写sqllite数据库
    SQLLite 简介
    arcengine 开发经典帖 【强烈推荐仔细研读】
    IHookHelper的用法
    ArcSDE中Compress与Compact的区别
    以Network Dataset(网络数据集)方式实现的最短路径分析
    ArcGIS网络概述
    ClassLoader.getResourceAsStream(name);获取配置文件的方法
    Xml中SelectSingleNode方法,xpath查找某节点用法
    Spring整合JUnit4测试使用注解引入多个配置文件
  • 原文地址:https://www.cnblogs.com/firstdream/p/7760490.html
Copyright © 2011-2022 走看看