Web安全相关

1. HTTPS和HTTP
区别:
HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

1、TCP 三次同步握手
2、客户端验证服务器数字证书
3、DH 算法协商对称加密算法的密钥、hash 算法的密钥
4、SSL 安全加密隧道协商完成
5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。

http://www.runoob.com/w3cnote/http-vs-https.html

2. https能不能防范中间人攻击?
正常情况下浏览器与服务器在TLS链接下内容是加密的,第三方即使可以嗅探到所有的数据,也不能解密。
但是中间人可以与你建立链接,然后中间人再与服务器建立链接,转发你们之间的内容。这时候中间人就获得了明文的信息。
https://en.wikipedia.org/wiki/Man-in-the-middle_attack


3. CSRF(Cross-site request forgery)
中文名称:跨站请求伪造
解释:攻击者盗用了你的身份,以你的名义发送恶意请求

解决方案:

Same-Site Cookies
Strict/Lax模式
Strict:浏览器在任何跨域请求中都不会携带 cookie
Lax:Lax 模式下有一个例外,就是在顶级导航中使用一个安全的 HTTP 方法发送的请求可以携带 cookie

1.检查Origin
2.Anti-CSRF tokens
当请求一个页面时,可以在返回的页面中嵌入一个随机的token。当真正的用户提交请求时,要求其同时提交该token(同源策略(SOP)会阻止attacker的页面读取该内容),这样就可以通过之前嵌入的那个随机 token 来校验。

refs:https://juejin.im/post/58c669b6a22b9d0058b3c630


4. MITM(Man in the middle)
中间人攻击
攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。

解决方案:
公钥基础建设PKI,客户端验证服务器,服务器验证客户端
更强力的相互认证
延迟测试
使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。
https://www.zhihu.com/question/20744215

XSS(Cross-Site Scripting)
跨站脚本攻击
代码注入。通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

解决方案:
转义HTML,过滤特殊字符
使用HTTP头指定类型,Content Security Policy

https://en.wikipedia.org/wiki/Cross-site_scripting
https://tech.meituan.com/2018/09/27/fe-security.html

原文地址:https://www.cnblogs.com/cnsec/p/13547552.html