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

前端网络安全 #26

Open
Inchill opened this issue Aug 12, 2022 · 0 comments
Open

前端网络安全 #26

Inchill opened this issue Aug 12, 2022 · 0 comments

Comments

@Inchill
Copy link
Owner

Inchill commented Aug 12, 2022

XSS 跨站脚本攻击

原理

XSS 是常见的 Web 攻击技术之一.所谓的跨站脚本攻击指得是:恶意攻击者往 Web 页面里注入恶意 Script 代码,用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取 cookie 信息、会话劫持等各种攻击。

危害

1.盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2.控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3. 盗窃企业重要的具有商业价值的资料
4.非法转账
5.强制发送电子邮件
6.网站挂马
7.控制受害者机器向其它网站发起攻击

前端如何处理

  • 过滤用户的输入信息,禁止用户在输入的过程中输入 "<", ">", "引号", "$", "_"
  • 核心的用户身份标示或 token 保存在 Cookie 中,Cookie 中一定要加 “HTTPOnly” 在结尾,保证只有在 html 操作时才能将 cookie 中的内容发送出去,在 JS 中无法获得用户的 Cookie 信息
  • 启用 CSP(Content Security Policy) 策略。在服务端使用 HTTP的 Content-Security-Policy 头部来指定策略,或者在前端设置 meta 标签。
Content-Security-Policy: default-src 'self'
<meta http-equiv="Content-Security-Policy" content="form-action 'self';">

CSRF 跨站请求伪造

原理

CSRF(Cross-site request forgery)跨站请求伪造,也被称为 “One Click Attack” 或者 Session Riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS 更具危险性。

前端如何处理

  • 减少在 cookie 中存储客户核心内容比如用户的 token、ID、access_token 等
  • GET 请求不对数据进行修改
  • 不让第三方网站访问到 Cookie,设置 Samesite Cookie 属性
  • 阻止第三方网站请求接口
  • 添加验证码(体验不好)
  • 判断请求的来源:检测Referer(并不安全,Referer可以被更改)
  • 使用Token(主流)

点击劫持

原理

点击劫持是指在一个Web页面中隐藏了一个透明的iframe,用外层假页面诱导用户点击,实际上是在隐藏的frame上触发了点击事件进行一些用户不知情的操作。

前端如何处理

  • frame busting
if ( top.location != window.location ){
    top.location = window.location
}
  • X-Frame-Options

X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。

DDOS 攻击

原理

DDOS 攻击,它在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线。

前端如何处理

  • 防范 DDOS 的第一步,就是你要有一个备份网站,或者最低限度有一个临时主页。生产服务器万一下线了,可以立刻切换到备份网站,不至于毫无办法。

后端如何处理

  • HTTP 请求的拦截,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者,它们的 User Agent 字段有特征(包含某个特定的词语),那就把带有这个词语的请求拦截。
  • 带宽扩容,或者使用 CDN

参考资料

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