关于针对XSS漏洞攻击防范的一些思考
众所周知,XSS几乎在最常见、危害最大的WEB漏洞。针对这个危害,我们应该怎么防范呢。
下面简单说一下思路。
作者:轻轻的烟雾(z281099678)
一、XSS漏洞是什么
XSS漏洞网上的资料太多,这里只简单说一下。
大概分为3种类型:反射型、存储型、DOM型。
但其实我认为,DOM型是被包含在反射型和存储型里的,只不过它具有一定的特殊性,所以经常把它独立出来说明。
1.反射型
就是攻击者对存在XSS漏洞的系统,通过构建一个具有攻击功能的URL链接,然后想方设法让被攻击者访问这个链接。一旦被攻击者访问了攻击链接,则暴露了自己的信息。

2.存储型
就是攻击者提交具有攻击功能的内容给有XSS漏洞的系统,系统把内容保存之后,就像一个地雷一样埋伏在系统里。被攻击者一旦访问这个地雷所在的页面,就不知不觉的泄漏了这个信息。
注意:这个地雷是永久有效的,可无限制的爆炸,而且爆炸并不会引起被攻击者的注意。
3.DOM型
就是利用反射型或者存储型漏洞,让被攻击者访问的页面的DOM发生改变,进而引起XSS攻击。
二、XSS攻击的防范
XSS臭名昭著,因为这类攻击简单,而危险极大。可能泄漏任何后台管理员的cookie,导致攻击者直接绕开登录检测的“大门”,直接进入后台系统,进而进行下一步可能危害性更大的攻击。
防范手段大概如下:
1.对用户提交数据进行过滤、转移
开发者或者安全工程师要有一个理念:所有用户都不可信。对于用户提交的信息,做完善的过滤、转移。
针对前端用户提交的数据,进行HTML字符转移、标签过滤等操作,对于需要提交富文本的后台用户,做好严格的允许和禁止的标签及属性的检查。
严格做好数据的检测和过滤,理论上可以控制绝大部分XSS攻击。当然事实上要做到完美的控制很难。

2.设置Content-Security-Policy
设置内容安全策略,限制浏览器对资源引用。这样可以一定程度上避免攻击者引入攻击资源。

3.对Cookie增加HttpOnly、Secure属性
对敏感Cookie进行保护,我认为是一种“事后保护”策略。即便是攻击者已经成功埋下了XSS地雷,但是由于我们做好Cookie保护,所以XSS攻击也拿不到想要的Cookie,从而导致攻击失效。
这里另外说一点,对于这一点,其实攻击者可能还有一些别开生面的思路,虽然无法直接拿到Cookie,但是他可以利用XSS发起一些迷惑人的攻击,比如给页面引到另外一个钓鱼页面,或者直接弹出帐号密码输入框,一旦被攻击者缺乏安全意识甚至是一个不小心,便主动把用户名和密码提交给了攻击者。

三、更多
对于XSS的防不胜防,我想到另外一个“补救措施”,那就是对系统进行监控。
我们把系统所有要正常引入的资源的域名都做成白名单,然后对系统的资源引用做监控,一旦系统的页面引入了白名单之外的资源,即记录引用资源等信息,并对安全员或者系统管理员发送告警。
利用浏览器PerformanceObserver对象,对所有的网络资源加载进行监控:
然后通过自定义函数check_url,对资源进行分析,如果不是白名单的网络资源,则触发记录和告警。如此便可让系统管理员对系统的XSS攻击有快速的知晓和反应。
最后说个题外话,一些浏览器(号称以安全著称,具体名称这里就不提了)很神奇,你使用它访问网站,它会默认的增加一些乱七八糟的链接的访问,甚至给你访问的页面的一些信息带上。我猜可能一些是广告,还有一些是什么分析,不得而知。但是作为基础设施的浏览器,夹带这些“私活”,真让人感觉恶心无耻且不寒而栗。

关于针对XSS漏洞攻击防范的一些思考的更多相关文章
- PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数
XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...
- 解决反射型XSS漏洞攻击
对于程序员来说安全防御,无非从两个方面考虑,要么前端要么后台. 一.首先从前端考虑过滤一些非法字符. 前端的主控js中,在<textarea> 输入框标签中,找到点击发送按钮后,追加到聊天 ...
- 从零学习安全测试,从XSS漏洞攻击和防御开始
WeTest 导读 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础.XSS基础.编码基础.XSS Payload.XSS攻击防御. 第一部分:漏洞攻防基础知识 XSS属于漏洞攻防,我们要研究 ...
- 新浪微博的XSS漏洞攻击过程详解
今天晚上(2011年6月28日),新浪微博出现了一次比较大的XSS攻击事件.大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建 党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉 ...
- XSS漏洞攻击原理与解决办法
转自:http://www.frostsky.com/2011/10/xss-hack/ 对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的.现在让我们来普 ...
- PHP的$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案
$_SERVER['PHP_SELF']简介 $_SERVER['PHP_SELF'] 表示当前 PHP文件相对于网站根目录的位置地址,与 document root 相关. 假设我们有如下网址,$_ ...
- JAVAWEB项目处理XSS漏洞攻击处理方案
对页面传入的参数值进行过滤,过滤方法如下 public static String xssEncode(String s) { if (s == null || s.equals("&quo ...
- XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析
2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...
- XSS脚本攻击漫谈
XSS跨站脚本攻击一直都被认为是客户端 Web安全中最主流的攻击方式.因为 Web环境的复杂性以及 XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什 ...
随机推荐
- LuoguP2953 [USACO09OPEN]牛的数字游戏Cow Digit Game(博弈论)
1~9显然,后面平\(A\)过去 #include <iostream> #include <cstdio> #include <cstring> #include ...
- Spring源码 09 IOC refresh方法4
参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...
- 从零开始Blazor Server(13)--消息通知
我们现在做了用户管理.角色管理.菜单管理. 但是大家有没有发现,我们的菜单要变化的话必须要刷新页面才行.这个体验感觉不太好. 今天我们就用全局通知组件来解决这个问题. 首先我们要改造以下我们的Main ...
- (WebFlux)003、多数据源R2dbc事务失效分析
一.背景 最近项目持续改造,然后把SpringMVC换成了SpringWebflux,然后把Mybatis换成了R2dbc.中间没有遇到什么问题,一切都那么的美滋滋,直到最近一个新需求的出现,打破了往 ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- QT学习(二)
这一篇学习QT中最重要的也是最有特色的信号槽机制. (因为我学习过MFC,所以我觉得QT的信号槽机制和MFC中的消息响应机制是一一对应的.不过是MFC用的是宏来实现,而QT用的是消息和槽.相对来说QT ...
- 若依代码生成的一个大坑 You have an error in your SQL syntax; check the manual that corresponds to your MySQL s
报错如下所示:显示我的xml文件的SQL语句有错 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: You h ...
- Redis变慢?深入浅出Redis性能诊断系列文章(三)
(本文首发于"数据库架构师"公号,订阅"数据库架构师"公号,一起学习数据库技术,助力职业发展) 本篇为Redis性能问题诊断系列的第三篇,主要从Redis服务层 ...
- 编写 bzt 脚本的正确姿势
这是今年1月24日的旧文,发现没在这里发过,就搬运过来了. 声明 本文讨论的使用场景主要为使用已有的 jmx 脚本,并配合 json 对 jmx 脚本进行部分参数的动态修改. 只补充一些官方文档上没有 ...
- 9.使用nexus3配置Python私有仓库
搭建Python私服,我们依旧使用nexus3. 与其他私服一样的,Python私服同样有三种类型: hosted : 本地存储,便于开发者将个人的一些包上传到私服中 proxy : 提供代理其他仓库 ...