说到跨站资源监控,首先会联想到『Content Security Policy』.既然 CSP 好用,我们何必自己再搞一套呢.那就先来吐槽下 CSP 的缺陷. 目前的 CSP 日志不详细 用过 CSP 的都很郁闷,上报的只有违规的站点名,却没有具体路径.这是缺陷,还是特意的设计? 显然,CSP 是为安全定制的,里面的规范自然要严格制定,否则就会带来新的安全问题.如果支持详细路径的上报,那又会引出什么问题? 由于 CSP 会上报所有的请求,甚至包括重定向的,因此可以用来探测重定向后的地址.假如已登…
用过 CSP 的都很郁闷,上报的只有违规的站点名,却没有具体路径.这是缺陷,还是特意的设计? 显然,CSP 是为安全定制的,里面的规范自然要严格制定,否则就会带来新的安全问题.如果支持详细路径的上报,那又会引出什么问题? 由于 CSP 会上报所有的请求,甚至包括重定向的,因此可以用来探测重定向后的地址.假如已登录的用户访问 login.xx.com 会重定向到 xx.com/username,那么攻击者设计一个只允许重定向前的规则的页面,用户访问后,重定向后的 URL 就会当做违规地址上报给攻击…
<html> <head> <title>利用onload执行脚本</title> <SCRIPT TYPE="text/JavaScript"> <!-- function opennews(){ alert("利用onLoad事件执行脚本") } //--> </SCRIPT> </head> <body onload="opennews()"…
前言 在之前介绍的流量劫持文章里,曾提到一种『HTTPS 向下降级』的方案 -- 将页面中的 HTTPS 超链接全都替换成 HTTP 版本,让用户始终以明文的形式进行通信. 看到这,也许大家都会想到一个经典的中间人攻击工具 -- SSLStrip,通过它确实能实现这个效果. 不过今天讲解的,则是完全不同的思路,一种更有效.更先进的解决方案 -- HTTPS 前端劫持. 后端的缺陷 在过去,流量劫持基本通过后端来实现,SSLStrip 就是个典型的例子. 类似其他中间人工具,纯后端的实现只能操控最…
[前言] 自腾讯与京东建立了战略合作关系之后,笔者网上购物就首选京东了.某天在家里访问京东首页的时候突然吃惊地发现浏览器突然跳到了第三方网站再回到京东,心里第一个反应就是中木马了. 竟然有这样的事,一定要把木马大卸八块. [原因排查] 首先在重现的情况下抓包,京东官网确实返回了一段Java让浏览器跳转到了yiqifa.com. 下图是应用层的抓包. 服务器返回的代码导致跳转,基本可以排除本地木马,推测是网络或者服务器的问题.根据笔者的经验,这种情况很大可能是链路上的流量劫持攻击.当然也不能排除京…
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 从本质上讲,SSLStrip 这类工具的技术含量是很低的.它既没破解什么算法,也没找到协议漏洞,只是修改和代理了明文的封包而已. 如果说劫持,要保持源站点不变才算的话,那 SSLStrip 并没做到.根据同源的定义,<协议, 主机名, 端口> 三者必须相同.显然它修改了协议,因此并非在源站点上劫持…
虽然互联网经过多年的发展,可是网站使用的底层协议仍是 HTTP,HTTP 作为一种明文传播协议,所有的传输数据都是明文,我们都知道在通信中使用明文(不加密) 内容可能会被窃听,同时网站存在被劫持的风险. 上篇<网站莫名跳转,从百度谈什么是网站劫持?>中我们讲到了搜索引擎劫持.网络劫持.浏览器劫持.路由器劫持等常见的网站劫持,面对多种方式的网站劫持,我们应该如何应对? 限制网站权限 部分网站遭遇劫持主要由于非法服务器获取了 Web 网站文件及文件夹的读写权限,针对这个问题,我们可以利用服务器的安…
jQuery $(document).ready()和JavaScript onload事件 Why we need a right time? 对元素的操作和事件的绑定需要等待一个合适的时机,可以看下面的例子: <!DOCTYPE html> <meta charset="utf-8"> <html> <head> <title>1-1</title> <script type="text/jav…
关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用了其他类(可能是更复杂的关联),所以当我们去使用这个类做事情时发现包空指针错误,这是因为我们这个类有可能已经初始化完成,但是引用的其他类不一定初始化完成,所以发生了空指针错误,解决方案如下: 1.写一个类继承spring的ApplicationListener监听,并监控ContextRefresh…
在进行实验和资料查询时,我遇到了几个关键问题: 1. window.onload到底是什么加载完触发? 2. body为什么会有onload事件? 3. 为什么是window.onload,而不是document.onload? 4. document ready到底是什么ready,DOM渲染完成? 5. jQuery怎么实现$(document).ready? 6. jQuery的ready,还能ready什么? 7. jQuery的document ready就一定比window.onlo…