CSRF 和 XSS
CSRF 攻击
CSRF(Cross-site request forgery,跨站请求伪造)
它是指攻击者利用了用户的身份信息,执行了用户非本意的操作。
防御手段 | 防御力 | 问题 |
---|---|---|
不使用 cookie | ⭐️⭐️⭐️⭐️⭐️ | 兼容性略差 ssr 会遇到困难,但可解决 |
使用 sameSite | ⭐️⭐️⭐️⭐️ | 兼容性差 容易挡住自己人 |
使用 CSRF token | ⭐️⭐️⭐️⭐️⭐️ | 获取到 token 后未进行操作仍然会被攻击 |
使用 referer 防护 | ⭐️⭐️ | 过去很常用,现在已经发现漏洞 |
XSS攻击
XSS(Cross Site Scripting,跨站脚本攻击),是指攻击者利用站点的漏洞,在表单提交时,在表单内容中加入一些恶意脚本,当其他正常用户浏览页面,而页面中刚好出现攻击者的恶意脚本时,脚本被执行,从而使得页面遭到破坏,或者用户信息被窃取。
服务器端对用户提交的内容进行过滤或编码。
- 过滤:去掉一些危险的标签,去掉一些危险的属性
- 编码:对危险的标签进行 HTML 实体编码
面试题
介绍 CSRF 攻击。
参考答案
CSRF 是跨站请求伪造,是一种挟制用户在当前已登录的 Web 应用上执行非本意的操作的攻击方法。 它首先引导用户访问一个危险网站,当用户访问网站后,网站会发送请求到被攻击的站点,这次请求会携带用户的 cookie 发送,因此就利用了用户的身份信息完成攻击
防御 CSRF 攻击有多种手段:
- 不使用 cookie。
- 为表单添加校验的 token 校验。
- cookie 中使用 sameSite 字段。
- 服务器检查 referer 字段。
介绍 XSS 攻击。
参考答案
XSS 是指跨站脚本攻击。攻击者利用站点的漏洞,在表单提交时,在表单内容中加入一些恶意脚本,当其他正常用户浏览页面,而页面中刚好出现攻击者的恶意脚本时,脚本被执行,从而使得页面遭到破坏,或者用户信息被窃取。
要防范 XSS 攻击,需要在服务器端过滤脚本代码,将一些危险的元素和属性去掉或对元素进行 HTML 实体编码。