https
http的局限性
- 明文传输;
- 不验证身份(包括服务器和访问者);
- 没有数据完整性校验。
https机制
内容加密步骤
- 使用非对称密钥加密方法来传输对称密钥(保证没有第三方可以获取到)
- 第二步使用第一步中传输的对称密钥来进行消息加密(可使加密过程更加快速)
证书
证明通信双方的身份
完整性校验
保持数据的收发一致。
XSS
含义
维基百科这么解释——跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
我看完似懂非懂- -
又看了几种解释,才有了自己的思路。
比如有个坏人,在发帖的时候,发布了一段恶意的JavaScript代码(脚本注入),而这个代码内容又请求了外部服务器(跨站),就是所谓的XSS。
攻击方式
反射型
发出请求时,XSS代码出现在URL中,作为输入提交到服务端。服务器解析后响应,XSS代码随相应内容一起传回浏览器,最后浏览器解析执行XSS代码。
存储型
相较于反射型,存储型XSS提交的代码会存储在服务端,下次请求目标页面时不用再次提交。
防御措施
编码
将用户输入的内容进行编码转义。过滤(最重要)
移除用户上传的DOM属性,如onerror等。
移除用户上传的style、script、iframe节点等。校正
避免直接对HTML Entity解码。
使用DOM Parse转换,校正不配对的DOM标签。
CSRF
含义
跨站请求伪造(Cross-site request forgery),通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
攻击步骤
- 登录受信任的网站A,并在本地生成cookie
- 在不登出A的情况下,访问危险网站B
防御措施
总的思想在客户端页面增加伪随机值。
- Cookie Hashing 所有的表单都包含一个伪随机值
- 验证码
- 不同的表单包含一个不同的伪随机值