Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XSS 与 CSRF 攻击 #28

Open
MaMaFish opened this issue Jul 24, 2020 · 0 comments
Open

XSS 与 CSRF 攻击 #28

MaMaFish opened this issue Jul 24, 2020 · 0 comments

Comments

@MaMaFish
Copy link
Owner

MaMaFish commented Jul 24, 2020

XSS

全称是 Cross Site Scripting,为了区分CSS,所以简称XSS。
XSS 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段。

主要的危害:

  • 窃取Cookie,通过JS document.cookie 获取 Cookie 信息,再将 Cookie 发送给恶意服务器。恶意服务器拿到 Cookie 以后,模拟用户登录。
  • 监听用户行为,恶意 JavaScript 可以使用“addEventListener”接口来监听键盘事件。比如获取用户输入的信用卡信息,再将其发送给恶意服务器。
  • 页面中生成浮窗广告。
  • 可以修改 DOM 伪造登录窗口,骗取用户输入用户名,密码等信息。

恶意脚本注入方式:

  1. 存储型 XSS 攻击
    表单中未经过滤转义的脚本数据存入DB,然后页面重新获取DB中的数据,就会执行相关恶意脚本,比如获取Cookie模拟用户登录。
  2. 反射型 XSS 攻击
    将一段含有恶意代码的请求提交给 Web 服务器,Web 服务器接收到请求时,又将恶意代码反射给了浏览器端。另外一点,Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是和存储型 XSS 攻击不同的地方。

如何阻止 XSS 攻击

  1. 过滤和转义用户输入的数据
  2. 服务器可以将Cookie 设置为 HttpOnly 标志
  3. 充分利用 CSP

CSRF

CSRF 全称是 Cross-site request forgery ,所以又称为“跨站请求伪造”。就是黑客利用了用户的登录状态,并通过第三方的站点来做坏事。

攻击方式

  1. 自动发起 Get/Post 请求
  2. 引诱用户点击链接
    与XSS 不同的是,CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。

如何防止 CSRF 攻击

  1. 充分利用好 Cookie 的 SameSite 属性
  • Strict: 最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie
  • Lax: Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。
  • None
    设置了 Strict 或 Lax 以后,基本就杜绝了 CSRF 攻击。当然,前提是用户浏览器支持 SameSite 属性。
  1. 验证请求的来源站点
    Referer 是 HTTP 请求头中的一个字段,记录了该 HTTP 请求的来源地址。
    Origin 字段,通过 XMLHttpRequest 发起跨站请求或者通过 POST 发送请求时,请求头都会带上 Origin 属性。
    Origin 属性只包含了域名信息,并没有包含具体的 URL 路径,这是 Origin 和 Referer 的一个主要区别。
    Origin 的值之所以不包含详细路径信息,是有些站点因为安全考虑,不想把源站点的详细路径暴露给服务器。因此,服务器的策略是优先判断 Origin,如果请求头中没有包含 Origin 属性,再根据实际情况判断是否使用 Referer 值。
  2. CSRF Token
@MaMaFish MaMaFish changed the title 第28题:XSS 与 CSRF 攻击 XSS 与 CSRF 攻击 Jan 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant