网络基础之网络安全

77 阅读2分钟

1. CSRF

1.1 定义

CSRF(cross-site request forgety),即跨站点请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作。CSRF的本质是利用了cookie会在同源请求中携带发送给服务器的特点,以此实现用户的冒充。

1.2 防御

(1)同源检测
服务器根据 http 请求头中 origin 或者 referer 信息来判断请求是否为允许访问的站点,从而对请求进行过滤。当 origin 或者 referer 信息都不存在的时候,直接阻止。
(2)使用 CSRF Token 来进行验证
服务器向用户返回一个随机数Token,当网站再次发送请求的时候携带这个Token,然后服务器对这个Token进行验证。
(3)用户提交数据时提交验证码

2. XSS

2.1 定义

XSS(Cross-site Scripting),即跨站脚本攻击,是一种代码注入攻击。攻击者通过在存在安全漏洞的网站中注入恶意脚本,使之在用户的浏览器上执行,从而盗取用户的信息,如cookie等。
XSS的本质是因为网站没有对恶意代码进行过滤,导致攻击者向网站中嵌入恶意可执行的网页脚本代码,当用户浏览该页面时,嵌入其中的代码被浏览器正常的解析执行,从而达到攻击者特殊目的。

2.2 分类

(1)非持久型XSS(反射型)
通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开的时候,恶意代码参数被HTML解析执行。
(2)持久型XSS(存储型)
一般出现在用户和服务器做交互的页面(提交Form表单),将内容经正常功能提交进入数据库永久保存,当前端页面获得从后端数据库中读出注入的代码时,恰好将其渲染执行。

2.3 防御

(1)CSP
建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截由浏览器自己实现。
(2)转义字符
转义输入输出的内容,对于引号、尖括号、斜杠进行转义
(3)设置HTTPOnly Cookie
web应用程序在设置cookie时,将其属性值设为HttpOnly,就可以避免网页中的cookie被客户端恶意JavaScript获取