Web安全学习系列(2)

《白帽子讲Web安全》笔记6-10章

从头学起=》Web安全学习系列(1)
转载请注明出处:http://blog.csdn.net/cym492224103

    • 第6章 H5安全
      • sandbox
      • Link Typesno referrer
      • Canvas
      • Access-Control-Allow-Origin
      • postMessage
      • Web Storage
    • 第7章 注入攻击
      • 注入攻击的本质
      • SQL注入
        • 实例
      • 盲注
    • 防御sql注入
    • 第8章 文件上传漏洞
      • 思路
      • 总结
    • 第9章 认证与会话管理
    • 第10章 访问控制
      • 权限控制
      • OAuth

第6章 H5安全

利用H5新标签属性发起XSS

sandbox

H5中iframe标签的sandbox属性:
allow-same-origin:允许同源访问。
allow-top-navigation:允许访问顶层窗口。
allow-forms:允许提交表单
allow-script:允许执行脚本。
该属性将极大的地增强应用使用iframe的安全性。

<a href=“xxx” rel=“noreferrer”>test</a>

这种设计是出于保护敏感信息和隐私的考虑。因为通过Referer,可能会泄露一些敏感信息。

Canvas

通过Canvas破解验证码,识别图片文字。

Access-Control-Allow-Origin

Access-Control-Allow-Origin:*
跨域请求的配置。
只有当目标页面的response中,包含了 Access-Control-Allow-Origin 这个header,并且它的值里有我们自己的域名时,浏览器才允许我们拿到它页面的数据进行下一步处理。

postMessage

postMessage 跨窗口传递消息(H5新的API)
postMessage允许每一个window(当前窗口、弹出窗口、iframe等)对象往其他的窗口发送文本消息,从而实现跨窗口的消息传递。这个功能不受同源策略限制。

Web Storage

受同源策略约束
Web Storage是HTML5引入的一个非常重要的功能,在前端开发中经常用到,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Storage官方建议为每个网站5MB。
Web Storage又分为两种:

  • sessionStorage
  • localStorage

从字面意思就可以很清楚的看出来,sessionStorage将数据保存在session中,浏览器关闭也就没了;而localStorage则一直将数据保存在客户端本地,除非主动删除数据,否则数据是永远不会过期的;不管是sessionStorage,还是localStorage,可使用的API都相同,常用的有如下几个方法:
- 保存数据:

localStorage.setItem( key, value );
sessionStorage.setItem( key, value );
  • 读取数据:
localStorage.getItem( key );     
sessionStorage.getItem( key );  
  • 删除单个数据:
localStorage.removeItem( key );     
sessionStorage.removeItem( key );
  • 删除所有数据:
localStorage.clear( ); 
sessionStorage.clear( );
  • 得到某个索引的key:
localStorage.key( index );     
sessionStorage.key( index );

两个都有属性 length 表示key 的个数,也即 key 长度:


var keyLength1 = localStorage.length;

var keyLength2 = sessionStorage.length; 


如上,key 和 value 都必须为字符串,换言之,web Storage的API只能操作字符串。

第7章 注入攻击

注入攻击的本质

用户输入的数据当做代码执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

SQL注入

实例

注入登录 admin’ and 1=1 /* 被阿里云发现封了攻击IP(半小时解封,阿里云后台可设置白名单)
这里写图片描述

盲注

验证注入SQL语句是否得到执行。
如:and 1=1 服务器返回正常就证明该语句成立。

Timing Attack(判断漏洞是否存在)
Timing Attack是盲注的一种高级技巧。
在密码学中,时序攻击是一种侧信道攻击,攻击者试图通过分析加密算法的时间执行来推导出密码。每一个逻辑运算在计算机需要时间来执行,根据输入不同,精确测量执行时间,根据执行时间反推出密码。

防御sql注入

  • 使用预编译语句
  • 使用安全的存储过程对抗sql注入
  • 检查数据类型
  • 使用安全函数

第8章 文件上传漏洞

思路

很多应用都有上传接口如:上传头像,上传成功后会返回一个服务器上传后的文件路径(如果上传了一个恶意脚本,则也会生成一个文件路径)。
访问该路径则会执行该脚本。
防御:过滤后缀。

总结

文件上传本来是一个正常的功能,但黑客利用这个功能就可以跨域信任边界。如果应用缺乏安全检查,或者安全检查的实现存在问题,就极有可能导致严重的后果。
文件上传往往与代码执行联系在一起,因此对于所有业务中要用到的上传功能,都应该由安全工程师进行严格的检查。同时文件上传又可能存在钓鱼、木马病毒等危险到最终用户的业务风险问题,使得我们在这一领域需要考虑的问题越来越多。

第9章 认证与会话管理

认证(Authentication)
认证的目的是为了认出用户是谁。
授权(Authorization)
授权的目的是为了觉得用户能够做出什么。

认证实际上是一个验证凭证的过程。

密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。

在Web开发中,网站访问量比较大,维护Session可能会给网站带来巨大的负担,因此,有种做法,就是把服务器不维护Session,Session放在Cookie中加密保存。当浏览器访问网站,会自动带上Cookie,服务器只需要解密Cookie即可得到用户的Session,用Expire控制Session的失效时间,这样就给了攻击者的机会。
因为Expire是由客户端控制的。

第10章 访问控制

权限控制

某个主题(subject)对某个客体(object)需要实施某种操作(operation),而系统对这种操作的限制就是权限控制。
垂直权限管理:基于角色的访问控制(Role-Based-Access-Control)RBAC
水平权限管理:基于数据的访问控制

OAuth

一个在不提供用户名和密码的情况下,授权的第三方应用访问Web资源的安全协议。

涉及到的3个角色:
消费方(Client)
服务提供方(Server)
用户(Resource Owner)

学无止境=》 Web安全学习系列(3)

你可能感兴趣的:(Web,sql注入,安全)