WEB开发安全(防御篇) | 青训营笔记

99 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第18天

WEB开发安全

防御篇

SameSite Cookie

image.png SameSite Cookie会判断信息中是否是第一方的Cookie,如果是第一方的Cookie,就会被接受;反之如果是第三方的Cookie,那么就会被拒绝。

HTTPS

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题,使用 HTTPS 通信机制可以有效地防止这些问题。

HTTP的缺点

  • 通信使用明文(不加密),可能会被他人窃听
  • 不验证通信方的身份,可能遭遇他人伪装
  • 无法证明报文的完整性,可能报文已被他人篡改

HTTP+加密+认证+完整性保护=HTTPS

使用HTTPS通信时,不再用http:// ,而是使用https:// 。当浏览器访问https:// 开头的网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。 image.png

HTTPS通信过程 image.png

HSTS

HSTS是国际互联网工程组织IETE正在推行一种新的Web安全协议HTTP Strict Transport Security

image.png

通常我们访问一个网站时,一般在浏览器中只输入网站地址,而不输入协议名。这就给了中间人攻击的机会,重定向会可能会被篡改,从而重定向到一个恶意网站而不是应该访问的网站。HSTS协议会让浏览器自动将所有到该网站的HTTP访问替换HTTPS访问。

CSP

CSP本质上就是建立白名单,程序员明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,具体如何拦截是由浏览器自行实现的。通过这种方式可以尽量减少来自XSS攻击。
在HTTPHeader上使用(首选) cbf91221f68e41268d8a770e252a63e.png 在HTML上使用 b1abce53b8ebcef19a78acf59382941.png

SRI

SRI是通过验证获取文件的哈希值是否和所提供的哈希值是否一样来判断浏览器所获得的资源是否被篡改。
为了提高网站性能,很多时候多个网站之间共享了js和css文件,这种共享行为存在风险,容易被攻击者进行攻击。所以就需要SRI来确保Web应用程序获得的文件没有被攻击者修改来降低被攻击的风险。

你可以根据CSP来配置你的服务器使得指定类型的文件遵守SRI。
通过在CSP头部添加require-sri-for指令实现 image.png 这条指令规定了所有JavaScript都要有integrity属性,且通过验证才能被加载。
所以,只要文件变化了,浏览器就不会执行,有效避免了脚本攻击。