客户端脚本安全与浏览器特性息息相关。浏览器以同源策略为基础,只有加深对同源策略的理解才能抓住浏览器安全的本质。
数据与指令
数据有哪些
浏览器打开的网站是数据的显示,其中有:
- 服务端存储的(如:数据库、内存、文件系统等)
- 客户端存储的(如:本地Cookies,Flash Cookies等)
- 传输中的(如:JSON数据、XML数据等)
- 文本数据(如:HTML、JavaScript、CSS等)
- 多媒体数据(如:Flash、MP3等)
- 图片数据
安全问题的产生
如果数据在流动的时候被污染就会引发安全。
数据的存储、传输、呈现需要执行指令,指令被解释执行产生了对应的数据内容。常见指令有:
SQL指令、JavaScript指令、HTML指令。
正常的数据内容被注入指令内容,并且在解释的过程的中,注入的指令能够被独立执行
如:SQL注入,XSS跨站脚本攻击
浏览器的同源策略
不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。
不同域或同域
同域要求两个占=站点同协议、同域名、同端口
客户端脚本
客户端脚本主要指JavaScript、ActionScript,以及JavaScript和ActionScript都遵循的ECMAScript脚本标准。Flash提供通信接口,使得这两个脚本语言可以很方便的互相通信。客户端的攻击几乎都是基于这两个脚本语言进行的,其中JavaScript最为广泛。
授权
黑客站点上的客户端脚本通过AJAX跨域访问
读写权限
资源
只要是数据都可以认为是资源。同源策略里的资源是指web客户端的资源。一般资源包括:
- HTTP消息头
- 整个DOM树
- 浏览器储存(Cookies、Flash Cookies、localStorage等)
信任与信任关系
- 服务器与服务器
- 网站与网站
- web服务的不同子域
- web层面与浏览器第三方插件
- web层面与浏览器特殊API
- 浏览器特殊API与本地文件系统
- 嵌入的Flash与当前的DOM树
- 不同的协议之间
社会工程学
伪装攻击以欺骗目标用户
常用的社工辅助技巧:Goole Hack、SNS垂直搜索、各种收集的数据库集合查询等。