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

网络攻击篇 #6

Open
lurenacm opened this issue Jun 18, 2021 · 0 comments
Open

网络攻击篇 #6

lurenacm opened this issue Jun 18, 2021 · 0 comments

Comments

@lurenacm
Copy link
Owner

XSS 攻击

XSS 攻击全称 cross site scripting 跨站脚本攻击,XSS 攻击是指浏览器执行了恶意的脚本文件(无论是同步还是跨步),从而拿到用户的信息并进行操作。

  • 窃取 cookie。
  • 监听用户的行为,获取用户的账号密码。
  • 修改 DOM 伪造登陆的表单
  • 在页面中形成广告。

实现 XSS 攻击的三种方式

存储型

将恶意的脚本代码,存储到服务器,客户端获取数据时,浏览器渲染页面时执行这段代码。例如在表单的评论上提交这段代码,浏览器如果没有做转义处理就会直接存储到服务器上。

反射型

反射型 XSS 攻击是指:恶意的脚本作为网络请求的一部分。例如在请求url中键入恶意的脚本代码
http://baidu.com?q=<script>alert("你完蛋了")</script>

文档型攻击

指在数据传输过程中,劫持到数据包,对数据包的代码进行修改。

防止 XSS 攻击

  • 对用户的输入信息进行过滤和转义
  • 利用浏览器的安全策略 CSP,浏览器的 CSP 可以控制其他域的资源加载,和禁止向其他域提交数据,提供上报的机制。
  • 利用 HTTPOnly 限制 JavaScript 对 cookie 的读取。

CSRF 攻击

CSRF 攻击(cross-site request forgery)是指,跨站请求伪造。所谓的跨站请求伪造是指,用户在A网上,点击了有恶意信息的B网页面,那么B网就会利用用户在A网目前的登陆状态发起跨站请求攻击。

CSRF 攻击的三种方式

GET 请求

这里的 get 请求是用户登陆A网 http://bank.example/withdraw?user=10000&for=hacker会在本地留下 cookie 且没有退出 A 网,随后上登陆了恶意的B网,点击了B网上面的一个GET请求链接,比如一张图片 <img src="http://bank.example/withdraw?user=10000&for=hacker">,这个请求携带了用户的 cookie 信息,这样B网就可以获取到用户的信息加以利用

POST 类型的 CSRF

和 GET 请求一样,恶意网站B,伪造了一个表单,你填写完后提交,这个 POST 请求照样会携带用户的 cookie,A 网的服务器接收后以为是用户的操作,造成被攻击

链接类型的CSRF

这种类型的 CSRF 的攻击是嵌入到了网站中图片,或广告内,用夸张语句诱导用户点击,造成被攻击。

CSRF攻击使用了服务器的检验漏洞和用户的登陆状态模拟用户的操作达到攻击的目的

CSRF 防止措施

  • 利用好 cookie 的 SameSite属性,对携带的 cookie 做限制。
    SameSite 的三个值 strict 禁止第三方请求携带 cookie,Lax 模式允许 get 请求携带 cookie,None 模式表示请求会携带 cookie。
  • 检验站点来源,使用请求头中的 Origin 和 RefererOrigin包含域名信息,Referer 包含了具体请求的URL路径。
  • CSRF token。由服务器生成的 Token 作为客服端和服务器之间通信。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant