XSS、CSRF
一、XSS
Cross-Site Scripting,为了与css区分,简称XSS.
攻击者通过目标网站注入恶意脚本,在用户浏览器中运行,以获取用户敏感信息,出现恶意行为。
XSS分类:
存储型
攻击者将恶意代码提交到目标网站的数据库,用户打开目标网站时,服务器将恶意代码从服务器取出,拼接在HTML中,被用户浏览器执行。常见于论坛发帖,评论,聊天等带有用户保存数据的网站功能
反射型
攻击者构造除特殊的URL,其中包含恶意代码,当用户打开带有恶意代码的URL时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
DOM型
攻击者构造除特殊的URL,其中包含恶意代码,不经过后端,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。
来源:
- 用户的UGC(用户生成内容)信息
- 第三方链接
- URL参数,POST参数
- Referer,Cookie
防范:
- html转义 对<、>等字符进行转义
- 限制输入长度等,增加攻击难度
- 设置cookie HTTP-only(服务端才能设置) 等对隐私信息加密
- 尽量不直接将用户输入的信息拼接到html
二、CSRF
Cross-Site Request Forgeries 跨站点请求伪造,攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
来源:
- 利用xss注入恶意链接,盗取安全凭证,调用接口进行恶意行为
防御:
- 验证码;强制用户必须与应用进行交互,才能完成最终请求。此种方式能很好的遏制 csrf,但是用户体验比较差。
- Cookie 设置http-only(服务端才能设置) ,利用 Cookie 的 SameSite 属性。
- Origin、Referer check;请求来源限制,此种方法成本最低,但是并不能保证 100% 有效,因为服务器并不是什么时候都能取到 Referer,而且低版本的浏览器存在伪造 Referer 的风险。
- token;通过url携带,或者设置请求头,token 验证的 CSRF 防御机制是公认最合适的方案。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HzmBlog!