本文目录一览:
- 1、如何正确防御xss攻击?
- 2、xss注入漏洞产生的原因?xss注入过程步骤是什么?防范xss注入的方法有哪些
- 3、如何正确防御xss攻击
- 4、XSS攻击的定义,类型以及防御方法?
- 5、白帽子讲Web安全的目录
- 6、发现XSS漏洞的一般做法有哪些?
如何正确防御xss攻击?
1、基于特征的防御。XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同,这就是给XSS漏洞防御带来的困难,不可能以单一特征来概括所有XSS攻击。
传统的XSS防御在进行攻击鉴别时多采用特征匹配方式,主要是针对JavaScript这个关键词进行检索,但是这种鉴别不够灵活,凡是提交的信息中各有JavaScript时,就被硬性的判定为XSS攻击。
2、基于代码修改的防御。Web页面开发者在编写程序时往往会出现一些失误或漏洞,XSS攻击正是利用了失误和漏洞,因此一种比较理想的方法就是通过优化Web应用开发来减少漏洞,避免被攻击:
①用户向服务器上提交的信息要对URL和附带的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
②实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
③确认接收的内容被妥善的规范化,仅包含最小的、安全的Tag,去掉任何对远程内容的引用,使用HTTP only的cookie。
3、客户端分层防御策略。客户端跨站脚本攻击的分层防御策略是基于独立分配线程和分层防御策略的安全模型。它建立在客户端,这是它与其他模型最大的区别。之所以客户端安全性如此重要,客户端在接受服务器信息,选择性的执行相关内容。这样就可以使防御XSS攻击变得容易,该模型主要由三大部分组成:
①对每一个网页分配独立线程且分析资源消耗的网页线程分析模块;
②包含分层防御策略四个规则的用户输入分析模块;
③保存互联网上有关XSS恶意网站信息的XSS信息数据库。
xss注入漏洞产生的原因?xss注入过程步骤是什么?防范xss注入的方法有哪些
对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的。现在让我们来普及一下XSS的一些常识,以后在开发的时候,每当有用户输入的内容时,都要加倍小心。请记住两条原则:过滤输入和转义输出。
一、什么是XSS
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。
在WEB2.0时代,强调的是互动,使得用户输入信息的机会大增,在这个情况下,我们作为开发者,在开发的时候,要提高警惕。
二、XSS攻击的主要途径
XSS攻击方法只是利用HTML的属性,作各种的尝试,找出注入的方法。现在对三种主要方式进行分析。
第一种:对普通的用户输入,页面原样内容输出。
打开(限公司IP),输 入:scriptalert(‘xss’)/script, JS脚本顺利执行。当攻击者找到这种方法后,就可以传播这种链接格式的链接 ()如:http: //go.ent.163.com/goproducttest/test.jsp?key=scriptalert(‘xss’) lt;/script,并对JSCODE做适当伪装,如:
%74%3e%61%6c%65%72%74%28%27%78%73%73%27%29%3c%2f%73%63%72%69%70%74%3e,当其 它用户当点此链接的时候,JS就运行了,造成的后果会很严重,如跳去一个有木马的页面、取得登陆用户的COOKIE等。
第二种:在代码区里有用户输入的内容
原则就是,代码区中,绝对不应含有用户输入的东西。
第三种:允许用户输入HTML标签的页面。
用户可以提交一些自定义的HTML代码,这种情况是最危险的。因为,IE浏览器默认采用的是UNICODE编码,HTML编码可以用ASCII方式来写,又可以使用”/”连接16进制字符串来写,使得过滤变得异常复杂,如下面的四个例子,都可以在IE中运行。
1,直接使用JS脚本。
img src=”javascript:alert(‘xss’)” /
2,对JS脚本进行转码。
img src=”javascript:alert(‘xss’)” /
3,利用标签的触发条件插入代码并进行转码。
img onerror=”alert(‘xss’)” /
4,使用16进制来写(可以在傲游中运行)
img STYLE=”background-image: /75/72/6c/28/6a/61/76/61/73/63/72/69/70/74/3a/61/6c/65/72/74/28/27/58/53/53/27/29/29″
以上写法等于img STYLE=”background-image: url(javascript:alert(‘XSS’))”
三、XSS攻击解决办法
请记住两条原则:过滤输入和转义输出。
具体执行的方式有以下几点:
第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等
第二、在输出方面,在用户输内容中使用XMP标签。标签内的内容不会解释,直接显示。
第三、严格执行字符输入字数控制。
四、在脚本执行区中,应绝无用户输入。
如何正确防御xss攻击
传统防御技术
2.1.1基于特征的防御
传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
2.1.2 基于代码修改的防御
和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:
1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。
当然,如上方法将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。
并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。
扩展资料:
XSS攻击的危害包括
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
受攻击事件
新浪微博XSS受攻击事件
2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。
大量用户自动发送诸如:
“郭美美事件的一些未注意到的细节”,“建党大业中穿帮地方”,“让女人心动的100句诗歌”,“这是传说中的神仙眷侣啊”等等微博和私信,并自动关注一位名为hellosamy的用户。
事件的经过线索如下:
20:14,开始有大量带V的认证用户中招转发蠕虫
20:30,某网站中的病毒页面无法访问
20:32,新浪微博中hellosamy用户无法访问
21:02,新浪漏洞修补完毕
百度贴吧xss攻击事件
2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等。并且吧友所关注的每个关注的贴吧都会转一遍,病毒循环发帖。并且导致吧务人员,和吧友被封禁。
参考资料:
XSS攻击-百度百科
XSS攻击的定义,类型以及防御方法?
XXS攻击全称跨站脚本攻击,是一种在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其他使用的页面中。
XSS攻击有哪几种类型?下面就由锐速云的小编为大家介绍一下
经常见到XSS攻击有三种:反射XSS攻击、DOM-based型XSS攻击以及储存型XSS攻击。
[if !supportLists]1、[endif]反射型XSS攻击
反射性XSS一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的URL,当受害者点击这些专门设计链接的时候,恶意代码会直接在受害主机上的浏览器上执行,反射型XSS通常出现在网站搜索栏,用户登入口等地方,常用来窃取客户端或进行钓鱼欺骗。
[if !supportLists]2、[endif]存储型XSS攻击
存储型XSS攻击也叫持久型XSS,主要将XSS代码提交储存在服务器端(数据库,内存,文件系统等)下次请求目标页面时不用在提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。储存型XSS一般出现在网站留言,评论,博客日志等交互处,恶意脚本储存到客户端或者服务端的数据库中。
[if !supportLists]3、[endif]DOM-based型XSS攻击
DOM-based型XSS攻击它是基于DOM的XSS攻击是指通过恶意脚本修改页面的DOM结构,是纯粹发生在客户端的攻击。DOM型XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身的安全漏洞。
如何防御XSS攻击?
[if !supportLists]1、[endif]对输入内容的特定字符进行编码,列如表示html标记等符号。
[if !supportLists]2、[endif]对重要的cookie设置httpOnly,防止客户端通过document。cookie读取cookie,此HTTP开头由服务端设置。
[if !supportLists]3、[endif]将不可信的输出URT参数之前,进行URLEncode操作,而对于从URL参数中获取值一定要进行格式检查
[if !supportLists]4、[endif]不要使用Eval来解析并运行不确定的数据或代码,对于JSON解析请使用JSON。Parse()方法
[if !supportLists]5、[endif]后端接口也应该要做到关键字符过滤的问题。
白帽子讲Web安全的目录
《白帽子讲web安全》第一篇 世界观安全第1章 我的安全世界观 21.1 web安全简史 21.1.1 中国黑客简史 21.1.2 黑客技术的发展历程 31.1.3 web安全的兴起 51.2 黑帽子,白帽子 61.3 返璞归真,揭秘安全的本质 71.4 破除迷信,没有银弹 91.5 安全三要素 101.6 如何实施安全评估 111.6.1 资产等级划分 121.6.2 威胁分析 131.6.3 风险分析 141.6.4 设计安全方案 151.7 白帽子兵法 161.7.1 secure by default原则 161.7.2 纵深防御原则 181.7.3 数据与代码分离原则 19.1.7.4 不可预测性原则 211.8 小结 22(附)谁来为漏洞买单? 23第二篇 客户端脚本安全第2章 浏览器安全 262.1 同源策略 262.2 浏览器沙箱 302.3 恶意网址拦截 332.4 高速发展的浏览器安全 362.5 小结 39第3章 跨站脚本攻击(xss) 403.1 xss简介 403.2 xss攻击进阶 433.2.1 初探xss payload 433.2.2 强大的xss payload 463.2.3 xss 攻击平台 623.2.4 终极武器:xss worm 643.2.5 调试javascript 733.2.6 xss构造技巧 763.2.7 变废为宝:mission impossible 823.2.8 容易被忽视的角落:flash xss 853.2.9 真的高枕无忧吗:javascript开发框架 873.3 xss的防御 893.3.1 四两拨千斤:httponly 893.3.2 输入检查 933.3.3 输出检查 953.3.4 正确地防御xss 993.3.5 处理富文本 1023.3.6 防御dom based xss 1033.3.7 换个角度看xss的风险 1073.4 小结 107第4章 跨站点请求伪造(csrf) 1094.1 csrf简介 1094.2 csrf进阶 1114.2.1 浏览器的cookie策略 1114.2.2 p3p头的副作用 1134.2.3 get? post? 1164.2.4 flash csrf 1184.2.5 csrf worm 1194.3 csrf的防御 1204.3.1 验证码 1204.3.2 referer check 1204.3.3 anti csrf token 1214.4 小结 124第5章 点击劫持(clickjacking) 1255.1 什么是点击劫持 1255.2 flash点击劫持 1275.3 图片覆盖攻击 1295.4 拖拽劫持与数据窃取 1315.5 clickjacking 3.0:触屏劫持 1345.6 防御clickjacking 1365.6.1 frame busting 1365.6.2 x-frame-options 1375.7 小结 138第6章 html 5 安全 1396.1 html 5新标签 1396.1.1 新标签的xss 1396.1.2 iframe的sandbox 1406.1.3 link types: noreferrer 1416.1.4 canvas的妙用 1416.2 其他安全问题 1446.2.1 cross-origin resource sharing 1446.2.2 postmessage——跨窗口传递消息 1466.2.3 web storage 1476.3 小结 150第三篇 服务器端应用安全第7章 注入攻击 1527.1 sql注入 1527.1.1 盲注(blind injection) 1537.1.2 timing attack 1557.2 数据库攻击技巧 1577.2.1 常见的攻击技巧 1577.2.2 命令执行 1587.2.3 攻击存储过程 1647.2.4 编码问题 1657.2.5 sql column truncation 1677.3 正确地防御sql注入 1707.3.1 使用预编译语句 1717.3.2 使用存储过程 1727.3.3 检查数据类型 1727.3.4 使用安全函数 1727.4 其他注入攻击 1737.4.1 xml注入 1737.4.2 代码注入 1747.4.3 crlf注入 1767.5 小结 179第8章 文件上传漏洞 1808.1 文件上传漏洞概述 1808.1.1 从fckeditor文件上传漏洞谈起 1818.1.2 绕过文件上传检查功能 1828.2 功能还是漏洞 1838.2.1 apache文件解析问题 1848.2.2 iis文件解析问题 1858.2.3 php cgi路径解析问题 1878.2.4 利用上传文件钓鱼 1898.3 设计安全的文件上传功能 1908.4 小结 191第9章 认证与会话管理 1929.1 who am i? 1929.2 密码的那些事儿 1939.3 多因素认证 1959.4 session与认证 1969.5 session fixation攻击 1989.6 session保持攻击 1999.7 单点登录(sso) 2019.8 小结 203第10章 访问控制 20510.1 what can i do? 20510.2 垂直权限管理 20810.3 水平权限管理 21110.4 oauth简介 21310.5 小结 219第11章 加密算法与随机数 22011.1 概述 22011.2 stream cipher attack 22211.2.1 reused key attack 22211.2.2 bit-flipping attack 22811.2.3 弱随机iv问题 23011.3 wep破解 23211.4 ecb模式的缺陷 23611.5 padding oracle attack 23911.6 密钥管理 25111.7 伪随机数问题 25311.7.1 弱伪随机数的麻烦 25311.7.2 时间真的随机吗 25611.7.3 破解伪随机数算法的种子 25711.7.4 使用安全的随机数 26511.8 小结 265(附)understanding md5 length extension attack 267第12章 web框架安全 28012.1 mvc框架安全 28012.2 模板引擎与xss防御 28212.3 web框架与csrf防御 28512.4 http headers管理 28712.5 数据持久层与sql注入 28812.6 还能想到什么 28912.7 web框架自身安全 28912.7.1 struts 2命令执行漏洞 29012.7.2 struts 2的问题补丁 29112.7.3 spring mvc命令执行漏洞 29212.7.4 django命令执行漏洞 29312.8 小结 294第13章 应用层拒绝服务攻击 29513.1 ddos简介 29513.2 应用层ddos 29713.2.1 cc攻击 29713.2.2 限制请求频率 29813.2.3 道高一尺,魔高一丈 30013.3 验证码的那些事儿 30113.4 防御应用层ddos 30413.5 资源耗尽攻击 30613.5.1 slowloris攻击 30613.5.2 http post dos 30913.5.3 server limit dos 31013.6 一个正则引发的血案:redos 31113.7 小结 315第14章 php安全 31714.1 文件包含漏洞 31714.1.1 本地文件包含 31914.1.2 远程文件包含 32314.1.3 本地文件包含的利用技巧 32314.2 变量覆盖漏洞 33114.2.1 全局变量覆盖 33114.2.2 extract()变量覆盖 33414.2.3 遍历初始化变量 33414.2.4 import_request_variables变量覆盖 33514.2.5 parse_str()变量覆盖 33514.3 代码执行漏洞 33614.3.1 “危险函数”执行代码 33614.3.2 “文件写入”执行代码 34314.3.3 其他执行代码方式 34414.4 定制安全的php环境 34814.5 小结 352第15章 web server配置安全 35315.1 apache安全 35315.2 nginx安全 35415.3 jboss远程命令执行 35615.4 tomcat远程命令执行 36015.5 http parameter pollution 36315.6 小结 364第四篇 互联网公司安全运营第16章 互联网业务安全 36616.1 产品需要什么样的安全 36616.1.1 互联网产品对安全的需求 36716.1.2 什么是好的安全方案 36816.2 业务逻辑安全 37016.2.1 永远改不掉的密码 37016.2.2 谁是大赢家 37116.2.3 瞒天过海 37216.2.4 关于密码取回流程 37316.3 账户是如何被盗的 37416.3.1 账户被盗的途径 37416.3.2 分析账户被盗的原因 37616.4 互联网的垃圾 37716.4.1 垃圾的危害 37716.4.2 垃圾处理 37916.5 关于网络钓鱼 38016.5.1 钓鱼网站简介 38116.5.2 邮件钓鱼 38316.5.3 钓鱼网站的防控 38516.5.4 网购流程钓鱼 38816.6 用户隐私保护 39316.6.1 互联网的用户隐私挑战 39316.6.2 如何保护用户隐私 39416.6.3 do-not-track 39616.7 小结 397(附)麻烦的终结者 398第17章 安全开发流程(sdl) 40217.1 sdl简介 40217.2 敏捷sdl 40617.3 sdl实战经验 40717.4 需求分析与设计阶段 40917.5 开发阶段 41517.5.1 提供安全的函数 41517.5.2 代码安全审计工具 41717.6 测试阶段 41817.7 小结 420第18章 安全运营 42218.1 把安全运营起来 42218.2 漏洞修补流程 42318.3 安全监控 42418.4 入侵检测 42518.5 紧急响应流程 42818.6 小结 430(附)谈谈互联网企业安全的发展方向 431· · · · · ·
发现XSS漏洞的一般做法有哪些?
关于发现时间,要具体到是检测什么目标了。找google的,和找腾讯的时间肯定不会一样。 至于“你们一般都是如何发现xss漏洞的?” 不同类型的XSS漏洞,可能不尽相同。
1.对于反射型XSS以及一些DOM XSS,一般建议是开发一些自动化的扫描工具进行扫描,并辅以手工分析。 另外一方面,搜索引擎也是快速寻找具有缺陷参数的好办法。
2.对于存储型XSS,
1) 对于单纯的输入-存储-输出点 的情况 (输入与输出点关系:一个地方输入,会有多个地方输出;不同地方输入,同一地方输出。绕了点 T T ...)。常规测试是正向直接输入内容,然后在输出点查看是否未过滤,当然你也可以先大胆假设输出点未过滤,反向寻找在何处进行输入,进而测试。
2)对于富文本,则需要对过滤器进行fuzz测试(人脑+自动化)了,正好乌云drops上有乌乌发了一篇:fuzzing XSS filter
3)第三类,就是一些WEB应用中所出现的DOM-存储型XSS,即输出点的无害内容,会经过js的一些dom操作变得危险(本质上和 第1点里的dom xss成因是一样的)。这一类的挖掘方法,个人觉得不太好总结。 其一,需要熟悉WEB应用的功能,其二,知道功能所对应的JS代码有哪些,其三,凭直觉猜测程序员会在哪些功能出现可能导致XSS的过滤遗忘或过滤错误(直觉是唬人的,其实就是你知道某些功能会需要某些代码实现,而这些代码常常容易出错),其四,需要有较好的代码阅读跟踪能力(JS一大坨。。还是蛮难读的.... 有些代码被混淆过,十分不易阅读,就会涉及到如何下断点进行调试的小技巧)。 我想,挖掘这一类的前提可能是需要有不错的前端开发经验,写多了,才会有足够的嗅觉。
其实吧,有时候专门去找漏洞会很累的,大什么怡情,小什么伤身,因此,我们还不如开心的敲敲代码,听听歌,静待生命中那些意外的收获。 这些收获经常来自身边的人发给你的一些事物。
最后,不论如何,基础很重要吧,内力不足,招式再多也没用,反之,草木竹石皆可为剑。