XSS(跨站脚本攻击)攻击与防御
一、 XSS攻击原理
XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩展的含义)。XSS攻击涉及到三方:攻击者,用户,web server。用户是通过浏览器来访问web server上的网页,XSS攻击就是攻击者通过各种办法,在用户访问的网页中插入自己的脚本,让其在用户访问网页时在其浏览器中进行执行。攻击者通过插入的脚本的执行,来获得用户的信息,比如cookie,发送到攻击者自己的网站(跨站了)。所以称为跨站脚本攻击。XSS可以分为反射型XSS和持久性XSS,还有DOM Based XSS。(一句话,XSS就是在用户的浏览器中执行攻击者自己定制的脚本。)
1.1 反射型XSS
反射性XSS,也就是非持久性XSS。用户点击攻击链接,服务器解析后响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器执行。一来一去,XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS。
特点:
1> XSS攻击代码非持久性,也就是没有保存在web server中,而是出现在URL地址中;
2> 非持久性,那么攻击方式就不同了。一般是攻击者通过邮件,聊天软件等等方式发送攻击URL,然后用户点击来达到攻击的;
1.2 持久型XSS
区别就是XSS恶意代码存储在web server中,这样,每一个访问特定网页的用户,都会被攻击。
特点:
1> XSS攻击代码存储于web server上;
2> 攻击者,一般是通过网站的留言、评论、博客、日志等等功能(所有能够向web server输入内容的地方),将攻击代码存储到web server上的;
有时持久性XSS和反射型XSS是同时使用的,比如先通过对一个攻击url进行编码(来绕过xss filter),然后提交该web server(存储在web server中), 然后用户在浏览页面时,如果点击该url,就会触发一个XSS攻击。当然用户点击该url时,也可能会触发一个CSRF(Cross site request forgery)攻击。
1.3 DOM based XSS
基于DOM的XSS,也就是web server不参与,仅仅涉及到浏览器的XSS。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生。过滤可以考虑采用esapi4js。
参见:http://www.freebuf.com/articles/web/29177.html , http://www.zhihu.com/question/26628342/answer/33504799
二、 XSS 存在的原因
XSS 存在的根本原因是,对URL中的参数,对用户输入提交给web server的内容,没有进行充分的过滤。如果我们能够在web程序中,对用户提交的URL中的参数,和提交的所有内容,进行充分的过滤,将所有的不合法的参数和输入内容过滤掉,那么就不会导致“在用户的浏览器中执行攻击者自己定制的脚本”。
但是,其实充分而完全的过滤,实际上是无法实现的。因为攻击者有各种各样的神奇的,你完全想象不到的方式来绕过服务器端的过滤,最典型的就是对URL和参数进行各种的编码,比如escape, encodeURI, encodeURIComponent, 16进制,10进制,8进制,来绕过XSS过滤。那么我们如何来防御XSS呢?
三、 XSS 攻击的防御
原则:宁死也不让数据变成可执行的代码,不信任任何用户的数据,严格区分数据和代码。
XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。
也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。
对输入内容的特定字符进行编码,例如表示 html标记的 < > 等符号。
对重要的 cookie设置 httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。
将不可信的值输出 URL参数之前,进行 URLEncode操作,而对于从 URL参数中获取值一定要进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。
不要使用 Eval来解析并运行不确定的数据或代码,对于 JSON解析请使用 JSON.parse() 方法。
后端接口也应该要做到关键字符过滤的问题。
使用XSS Filter
XSS(跨站脚本攻击)攻击与防御相关推荐
- XSS 跨站脚本攻击 的防御解决方案
XSS 跨站脚本攻击 的防御解决方案 参考文章: (1)XSS 跨站脚本攻击 的防御解决方案 (2)https://www.cnblogs.com/suwings/p/6285340.html 备忘一 ...
- 《XSS跨站脚本攻击剖析与防御》—第6章6.1节参 考 文 献
本节书摘来自异步社区<XSS跨站脚本攻击剖析与防御>一书中的第6章6.1节参 考 文 献,作者邱永华,更多章节内容可以访问云栖社区"异步社区"公众号查看. 参 考 文 ...
- xss跨站攻击html转义,前端攻击和防御(一)XSS跨站脚本攻击
(一)XSS跨站脚本攻击 (1)XSS简介 XSS攻击全称跨站脚本攻击(Cross Site Scripting),是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混 ...
- XSS跨站脚本攻击剖析与防御笔记
读书笔记,希望某位小伙伴用得上 第一章XSS初探 1.概念:Cross-Site Scripting简称XSS,是由于WEB应用程序对用户的输入过滤不足而产生的,攻击者利用网站漏洞把恶意脚本注入到网站 ...
- XSS跨站脚本攻击原理与常见的脚本及《XSS跨站脚本攻击剖析与防御》摘录总结
XSS跨站脚本攻击原理与常见的脚本及<XSS跨站脚本攻击剖析与防御>摘录总结 一.XSS跨站脚本攻击的原理 1.什么是XSS跨站脚本 2.跨站脚本攻击产生因素 二.XSS跨站脚本攻击的类别 ...
- XSS跨站脚本攻击与防御
XSS跨站脚本攻击与防御 1.什么是 XSS ? XSS (Cross Site Scripting),即跨站脚本攻击,是一种常见于 Web 应用中的计算机安全漏洞.恶意攻击者往 Web 页面里嵌入恶 ...
- xss攻击突破转义_WEB安全之XSS攻击方式与防御方式
上一期给大家简单介绍XSS以及其操作,本期将带大家了解XSS比较常见的攻击方式与防御方式,一起去了解一下~ XSS 常见攻击方法 1.绕过 XSS-Filter,利用 <> 标签注入 Ht ...
- xss跨站脚本攻击_网络安全xss跨站脚本攻击原理
以下在未经授权的网站操作均为违法行为 XSS跨站脚本攻击 xss的危害 网络钓鱼,盗取各类账号密码 我们先来看一下下面的案例:先来记住一下下面中的表 我们来做一个转发 上面页面显示已经登录,但是突然页 ...
- 遭遇 XSS 跨站脚本攻击?稳住,这些方法可保你渡劫 | 附代码、图解
作者 | 杨秀璋 责编 | 夕颜 出品 | CSDN博客 本文将详细讲解XSS跨站脚本攻击,从原理.示例.危害到三种常见类型(反射型.存储型.DOM型),并结合代码示例进行详细讲解,最后分享了如何预防 ...
- XSS及CSRF攻击防御
一.概念: XSS攻击全称跨站脚本攻击(Cross Site Scripting); CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Clic ...
最新文章
- 如何设置文字的位置html5,怎么设置文字在表格中的位置
- Fiddler无法抓取HTTPS的问题,Fiddler证书无法安装终极解决方案,
- JFrame中使用jpanel来布局
- 趣话题:git三部曲(一)-bug之争,到底谁才是该背锅的那个人?
- c语言课程笔记格式,C语言课程学习笔记.docx
- 决用 Anaconda 完美解 Python2 和 python3 共存问题
- Domino XML Language(DXL)简介
- php源码查后门,某一次排查源码后门的过程
- 彻底卸载McAfee Agent
- 【力扣】合并两个有序链表
- 正弦波、方波、三角波的产生和两两之间相互转换
- light动名词_动名词的用法英语语法大全
- 嘘,这份0项目经验应对面试的独门秘籍,千万别被你的面试官发现~
- 选择运营商3G上网资费套餐其实挺实惠
- 日常技术积累-ARM中RO/RW/ZI
- LaTeX 注释快捷键
- Bank Marketing预测一个客户购买理财产品的成功率
- Java3D与其他三维技术的比较
- android横竖屏切换方法,Android横竖屏切换的生命周期
- NKD 编译通过,但是eclipse提示报错 linux
热门文章
- php strtoupper 和 array_change_key_case 字符串转大写,小写
- xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验
- 改成中文版的_lol手游怎么改成中文版?英雄联盟手游中文版更改教程
- 每日一笑 | 如果把大脑看成CPU的话...
- idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)
- lcd屏幕抖动_电视屏幕面板大科普!买电视之前必看!
- uboot移植9个步骤_不知道具体的新房装修步骤?9个步骤教你吃透装修
- linux卸载android studio,mac上完整卸载删除.简单粗暴无脑:androidstudio删除方案
- linux安装卷管理,Linux安装管理ISCSI卷(initiator端)
- linux raw设备格式化,SUSE Linux 10配置裸设备(raw devices)