web安全 XSS攻击 和 CSRF攻击

XSS是什么?
XSS攻击又称 跨站脚本攻击。

定义:攻击者给前端页面植入一段恶意代码,欺骗用户操作发送到服务器,服务器返回到前端,浏览器解析之后能被执行,从而获取用户信息,以及冒充用户向服务器发起请求。

如何防御?

1、把用户端提交的信息中保护特殊字符进行转义,

如:
image
例如下面这段代码就会被浏览器执行,浏览没办法识别它是一段恶意代码
image
特殊字符转义
image
可以看到转义之后,变成了浏览器不能识别的字符串

2、对于链接跳转,如 <a href="xxx" 或 location.href="xxx",要检验其内容,禁止以 javascript: 开头的链接

image
这段代码在点击a标签时,会弹出弹框。所以我们要做一个禁止判断
image

3、Content Security Policy CSP防范

3.1、禁止加载外域代码,防止复杂的攻击逻辑。
3.2、禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。

CSP使用方式:
设置响应头Content-Security-Policy和使用meta标签。
响应头:
Content-Security-Policy: 指令1 指令值1 指令值2; 指令2 指令值1;
meta 标签:
<metahttp-equiv="Content-Security-Policy"content="指令1 指令值1 指令值2; 指令2 指令值1;">

类型:
1、xss反射型:攻击者构造出特殊的 URL,其中包含恶意代码。
用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
2、xss存储型:攻击者通过植入恶意代码,将恶意代码提交到目标服务器中,当用户打开网站时,服务器将恶意代码同正常代码一起返回给浏览器解析执行

CSRF是什么?

CSRF是跨站请求伪造,攻击者诱导用户进入第三方网站,从第三方网站向目标网站发起攻击,CSRF通常是跨域的。

特点:

1、攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。
2、攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据。
3、整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。
4、跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。

如何防范?

1、禁止不明外域连接访问

1.1、同源检测:在http协议中,每个请求都会携带两个header,用于标记来源域名。
Origin Header:检测是否来自同域下的请求
Referer Header:浏览器提供一个值,来判断是否来自同一个域名

2、提交时要附加本域才能获取的信息。

2.1 token 验证(因为攻击者无法获取信息,只能冒充)
posted @ 2022-10-08 21:19  尼古拉斯-富贵  阅读(76)  评论(0编辑  收藏  举报