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

Web 前端安全 #5

Open
slogeor opened this issue Aug 18, 2019 · 0 comments
Open

Web 前端安全 #5

slogeor opened this issue Aug 18, 2019 · 0 comments

Comments

@slogeor
Copy link
Owner

slogeor commented Aug 18, 2019

Web 前端安全是识破 Web 前端存在的安全漏洞,保证用户数据的安全。常见的攻击有以下几种。

  • XSS 跨站脚本攻击
  • CSRF 跨站请求伪造
  • clickjacking 点击劫持
  • 网络劫持

XSS 跨站脚本攻击

XSS 是一种经常出现在 Web 应用的安全漏洞,它允许恶意用户将代码植入提供给用户使用的界面中。在 Web 前端场景中,主要植入的是 JavaScript 代码。

XSS 攻击分为 存储型 XSS、反射型 XSS、DOM-XSS 三种。

1.存储型 XSS

具有攻击型的 XSS 数据存储在服务器,能够被普通用户完整的从服务器获取并执行,从而导致 XSS 攻击。

2.反射性 XSS

用户输入的 XSS 数据发送给服务器,服务器未经转义又返回给用户并执行,从而导致的 XSS 攻击。

3.DOM-XSS

DOM-XSS 是一种特殊类型的反射型 XSS,利用 JS 脚本来实现 XSS 攻击。

攻击原理

XSS 攻击就是利用一切手段在目标用户执行攻击脚本(JavaScript)

常用手段

  • HTML 代码片段内嵌 XSS 数据
    • HTML Entity: < > ' " \
  • URL 参数不可信的数据
    • URL 编码
  • src 或 href 上不可信的 URL
    • url 规范、https
  • JavaScript 变量
    • Unicode 编码、转义
  • DOM XSS
    • 编码、转义

防御方法

  • 对一切的输入、输出进行转义
    • HTMLEncode
    • JavaScriptEncode
  • 在数据添加到 DOM 或者执行 DOM API 时,对内容进行 HTMLEncode 和 JavaScriptEncode

CSRF 跨站请求伪造

攻击者盗用了你的身份,以你的名义发送恶意请求。

  • 群发邮件
  • 盗取你的账户
  • 购买商品及交易

CSRF 又称跨域攻击。

发生的必备条件

  • 1.登录受信任的网站 A,并在本地生成 Cookie
  • 2.在Cookie有效的情况登录了危险网站 B

常用手段

  • img 模拟 GET 请求更新数据
  • iframe 模拟 POST 请求更新数据

CSRF 攻击是源于 Web 的隐式身份验证机制。Web 的身份验证能够保证一个请求是来自某个用户的浏览器,但是无法保证是本人。

防御手段

  • http referer
    • 简单易行
    • 低版本浏览器存在 referer 伪造风险
    • 用户可以设置不发送 referer
  • 验证码
    • 体验不好
  • token
    • 相对安全

clickjacking 点击劫持

点击劫持又称 UI 覆盖攻击。攻击者利用一个或多个透明或不透明的层来诱导用户点击按钮操作,实际上点击的是用户看不到按钮,从而实施攻击。

实现手段

实现页中内嵌 <iframe />标签,并且使用 CSS 样式表将其不可见。

防御手段

  • X-FRAME-OPTIONS
  • 顶层判断
    • top != self || top.location != self.location || top.location != location

网络劫持

我们的网站一般都是放在服务器上,访问网站会经历许多层代理,如果在某一个环节,数据被中间代理层所劫持,它们就能获得用户的数据,从而实施攻击。

防御手段

  • https

参考资料

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