网络知识 | 《图解HTTP》读书笔记(下)
【网络知识】| 作者 / Edison Zhou
这是EdisonTalk的第294篇原创内容
作为一个专业的IT技术人,一个Web应用开发者,不了解网络基础和协议,怎么能行?本文是我2016年阅读《图解HTTP》一书的读书笔记,希望对你有所帮助!
上半部分:点击此处阅读
1确保Web安全
HTTPS
在HTTP协议中有可能存在信息窃听或者身份伪装等安全问题,即使已经过加密处理的通信,也会被窥视到通信内容。例如:使用一些抓包软件如Packet Capture或Sniffer就可以抓取相同段上的通信。使用HTTPS(HTTP Secure)通信机制就可以有效地防止这些问题。
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。通常情况下,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简而言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说,SSL是当今世界上应用最为广泛的网络安全技术。在采用了SSL之后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。
既然HTTPS安全可靠,那为何所有的Web网站不一直使用HTTPS?
一是因为与纯文本通信相比,加密通信会消耗更多的CPU以及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定会随之减少。
二是购买证书的开销也很大,要进行HTTPS通信,证书是必不可少的,而使用的证书必须要向认证机构(CA)购买。通常,一年的授权费用需要600人民币左右。
所以,如果是非敏感信息一般都使用HTTP通信,只有在包含个人信息等敏感数据时,才会使用HTTPS加密通信。
Edison补充:建议所有to C的Web应用都使用HTTPS!
确认访问用户身份的认证
某些Web页面只想让特定的人浏览,或者干脆本人可见。为达到这个目标,必不可少的就是认证功能。
HTTP/1.1使用的认证方式如下:
(1)BASIC认证(基本认证) → 不够灵活,达不到多数Web网站期望的安全性等级(直接发送明文密码BASE64编码),因此它并不常用。
(2)DIGEST认证(摘要认证) → 采用质询响应方式,相比BASIC认证,密码泄露的可能性就降低了。
(3)SSL客户端认证 → 借助HTTPS的客户端证书完成认证,凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。
(4)FormBase认证(基于表单认证)
通常情况下,一种安全的保存方法是:先利用密码加盐(Salt)的方式增加额外信息,再使用散列(Hash)函数计算出散列值后保存。
2Web的攻击技术
针对Web应用的攻击模式
(1)主动攻击:攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。最具典型的攻击就是 SQL注入攻击和OS命令注入攻击。
(2)被动攻击:利用圈套策略执行攻击代码的攻击模式,在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。
跨站脚本攻击(XSS)
跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者JavaScript脚本进行攻击的一种攻击。
跨站脚本攻击可以造成以下影响:
(1)利用虚假输入表单骗取用户个人信息。
(2)利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
(3)显示伪造的文章或者图片。
SQL注入攻击
SQL注入(SQL Injection)是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。该安全隐患有可能引起极大地威胁,有时会直接导致个人信息及机密信息的泄露。
SQL注入攻击有可能造成以下影响:
(1)非法查看或篡改数据库内的数据。
(2)规避认证。
(3)执行和数据库服务器业务关联的程序等。
OS命令注入攻击
OS命令注入攻击是指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。
HTTP首部(Header)注入攻击
HTTP首部注入攻击是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主题的一种攻击。属于被动攻击模式。
因会话管理疏忽引发的安全漏洞
(1)会话劫持:攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的。
(2)会话固定攻击:强制用户使用攻击者指定的会话ID,属于被动攻击。
(3)跨站点请求伪造(Cross-Site Request Forgeries,CSRF):攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
CSRF有可能造成以下影响:
1、利用已通过认证的用户权限更新设定信息等;
2、利用已通过认证的用户权限购买商品;
3、利用已通过认证的用户权限在留言板上发表言论等;
DoS攻击
DoS攻击(Denial of Service attack)是一种让运行中的服务呈停止状态的攻击。有时也叫作服务停止或拒绝服务攻击。主要有以下两种DoS攻击方式:
(1)集中利用访问请求造成资源过载,资源用尽的同时,实际上也就呈停止状态。
单纯来讲,就是发送大量的合法请求,服务器很难分辨何为正常请求,何为攻击请求,因此很难防止DoS攻击。多台计算机发起的DoS攻击成为DDoS攻击(Distributed Denial of Service attack),DDoS攻击通常利用那些感染病毒的计算机作为攻击者的攻击跳板。
(2)通过攻击安全漏洞使服务停止。
3拓展阅读
关于第二部分的Web攻击技术及ASP.NET Web应用安全这个主题,推荐阅读一下我的另外一篇文章《白帽子讲Web安全-学习总结》,里面有我学习学习《白帽子讲Web安全》一书的总结,也有一些适用于ASP.NET Web应用站点的安全扫描工具的介绍。此外,也推荐一个适用于.NET Core的代码安全分析工具Security Code Scan,它是一款开源的代码安全分析工具,可以直接在Visual Studio Marketplace中找到。我也有一篇文章介绍了SCS的使用,参考《一个适合.NET Core的代码安全分析工具-SCS》。
另外,推荐阅读吴翰清老师的《白帽子讲Web安全》一书,这是评分较高的一本(豆瓣评分7.4),虽然现在看来有点过时(很多的漏洞案例都早已被修复),但是基础的知识点都有覆盖,是建立安全思维的好书!此外,它对于安全开发流程与运营的介绍,同样具有深刻的行业指导意义。
Ref参考资料
[日]上野宣,《图解HTTP》
后台回复:图解HTTP,即可获得pdf下载链接哟!
????扫码关注EdisonTalk
设为星标,不再失联!
往期推文合集:2020年上半年推文合集
成都新鲜坑位:喜鹊生活招聘.NET开发