你不可不知的WEB安全知识(第一部分:HTTPS, TLS, SSL, CORS, CSP)
什么是Web安全?
网络对每个用户都不是绝对安全的,每天我们都会听到网站因为拒绝服务攻击而变得不可用,或者页面被伪造。
系列文章对于理解web安全基础知识很有帮助。
系列文章总结了最常见的攻击,并给出了了对应的应对策略。
不同类型的Web安全
- HTTPS
- TLS
- SSL
- CORS
- CSP
- OWASP (安全风险) >> 我将在本系列的第二部分中讲解它
- 哈希算法 >> 我会在本系列的第二部分中讲解它
-
- MD5
-
- SHA
-
- scrypt
-
- bcrypt
HTTPS
它是HTTP的安全版本,该协议的全称是Hypertext transfer protocol secure,它主要用于在web浏览器和网站之间发送数据。
其他人不能访问数据,因为它使用TSL协议加密通信,我将在下一个主题中解释它。
HTTPS的工作原理
它使用称为传输层安全(TLS)的加密通信协议,前身称为安全套接字层(SSL)。
此加密使用两个密钥,一个称为公钥,另一个称为私钥。
- 1、公钥:在浏览器和网站之间共享。
- 2、私钥:此密钥用于解密由公钥加密的信息,并且不会在服务器之外共享。
TLS
它是目前使用最多的协议,旨在促进互联网上通信的隐私、数据安全,TLS的使用案例是加密应用程序与服务器之间的通信、电子邮件、消息传递语音(VoIP)。
TLS的工作原理
任何要使用TSL的应用程序或网站,必须将TLS证书(也称为“ SSL证书”)安装到基本服务器上 。
它包含证书持有者、私钥和公钥的非常重要的信息,用于解密和加密通信。
此过程称为TLS握手🤝,步骤:
- 确定会话期间将使用的TLS版本。
- 通过使用TLS证书验证服务器的身份。
- 握手过程结束后,生成会话密钥供会话期间使用。
为此,该主题需要进一步的解释,我将写一篇文章,并在此处添加一个链接。
SSL
安全套接字层(SSL)是一种基于加密的Internet安全协议,它是Netscape公司于1995年为确保Internet连接的完整性和私密性而创建的,如今已将其命名为TLS。
SSL的工作原理
就像基于握手TLS概念的TLS版本。
TLS和SSL有什么区别
SSL是TSL的旧版本,在国际互联网工程任务组(IETF)继Netscape之后负责SSL的发展,其名称已更改,如今一些开发人员使用SSL和TLS来指代同一事物。
注意自1996年以来,SSL没有任何新更新,这使它非常容易受到黑客攻击,并且所有现代浏览器不再支持它,它们仅支持TLS。
CORS
跨域资源共享(CORS)是一种机制,它使用HTTP报头来指定哪些外源可以访问本地资源,以及如何访问它,这意味着我们可以为允许的跨域访问我们的资源列出一个白名单。
CORS的工作原理
- 1、当站点发出获取请求以从外部服务器获取资源时,浏览器将添加一个标头,其中包含标有示例Origin的源:http://www.example.com。
- 2、服务器接收预检请求,并在白名单中搜索有关给定来源的Access-Control-Allow-Origins,然后发送给浏览器选项调用,然后浏览器将确定实际请求是否可以安全发送,例如 Access-Control-Allow-Origin:http://www.example.com 或此标头Access-Control-Allow-Origin:* 将允许任何请求获取资源。
- 3、如果服务器指定方法,则它将请求方法与示例 比较 Access-Control-Allow-Methods: PUT, DELETE.
CSP
内容安全策略是一个更高的安全层,可帮助检测和缓解不同类型的恶意攻击,例如(跨站脚本(XSS),数据注入攻击,点击劫持,等等……)。
-
跨站脚本攻击(XSS):它是一个漏洞,允许黑客网站中注入恶意代码,并且用于使客户端执行该代码以获取敏感数据(例如Cookie,会话信息和特定于站点的信息),这是因为Web应用未使用足够的验证或编码,用户的浏览器无法检测到恶意脚本不可信。
-
注入攻击:是一种注入到网站中的恶意代码,该代码从数据库中获取所有信息给攻击者,而其中的第一类是SQL注入。
-
点击劫持:也被称为 “UI覆盖攻击” ,是指攻击者诱使用户在单击顶层时,实际是点击了透明或不透明的按钮,链接到另外的页面。
CSP原理
它使用了指令概念,每个指令都必须指定可以从何处加载资源,从而防止浏览器从任何其他位置加载数据。
最常用的指令:
- default-src:默认的加载策略(JavaScript,图像,CSS,AJAX请求,ETC ...)示例: default-src ‘self’ cdn.example.com;
- img-src: 定义图片来源,示例:img-src ‘self’ img.example.com;
- style-src: 定义CSS文件来源,示例:style-src ‘self’ css.example.com;
- script-src : 定义JavaScript 文件来源 ,示例:script-src ‘self’ js.example.com;
- connect-src: 为XMLHttpRequest(AJAX),WebSockets或EventSource定义合法的目标。如果它与主机建立了任何不允许连接,浏览器将响应400错误,示例:connect-src ‘self’;
- 多标签指令定义: default-src ‘none’; script-src ‘self’; connect-src ‘self’; img-src ‘self’; style-src ‘self’;
总结
我希望我已经充分说明这个主题的重要性,并且向你解释了在这一广泛领域中进步和获得知识的第一步,并且我将在本系列中定期添加有关此主题的任何新信息,以便本系列的所有部分保持同步。
别忘了阅读接下来关于这个主题的文章。