某些 Web 页面只想让特定的人浏览,因此服务器必须认证客户端身份。HTTP/1.1 使用的认证方式如下所示:
- BASIC 认证(基本认证)
- DIGEST 认证(摘要认证)
- SSL 客户端认证
- FormBase 认证(基于表单认证)
BASIC认证
DIGEST认证
FormBase 认证(Cookie&Session)
Beginner Guide to Understand Cookies and Session Management
Understanding the CSRF Vulnerability (A Beginner’s Guide)
会话劫持
攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的 防御:- 服务端要使用复杂的ID生成算法,避免会话ID被猜出。客户端提交的用户名、密码,服务端不要明文保存,否则会增加密码泄露的风险。一种安全的保存方法是,先利用给密码加salt的方式增加额外信息,再使用散列(hash)函数计算出散列值后保存。
- 加上httponly 属性,不允许js获取此cookie,防范xss获取含有会话ID的cookie
- 重要表单操作加上随机Token值,防范CSRF攻击
SSL客户端认证
服务器会发送 Certificate Request 报文,要求客户端提供客户端证书。服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始 HTTPS 加密通信。 SSL客户端认证存在证书导入及证书签发费用等问题,还尚未普及,所以只好使用由 Web 应用程序各自实现基于表单的认证方式。更快更强
早期版本HTTP存在的问题-串行连接持久连接
客户端:
Connection: Keep-Alive
服务端:
Connection: Keep-Alive
Keep-Alive: max=5, timeout=120
管线化
HTTP 管线化同时依赖于客户端和服务器的支持,遵守 HTTP/1.1 的服务器支持管线化。这并不是意味着服务器需要提供管线化的回复。 流水线机制须透过永久连线(persistent connection)完成,并且只有 GET 和 HEAD 等要求可以进行流水线。全双工的WebSocket
最初筹划将WebSocket作为HTML5标准的一部分,现在它已成为独立的协议标准Tips
- 获取支持的HTTP Method
curl -v -X OPTIONS http://192.168.1.109
- Put Method
curl http://192.168.1.103/dav/ --upload-file /root/Desktop/curl.php -v
msf> use auxiliary/scanner/http/http_put
nmap -p 80 192.168.1.103 --script http-put --script-args http-put.url='/dav/nmap.php',http-put.file='/root/Desktop/nmap.php'
burpsuite,如下图