0%

前端网络安全


项目都是用的vue的框架,输入框之类的都已经帮我们做了大部分的安全处理,但是还是要了解一下

原文链接

网络安全是前端工程师需要考虑的问题,大多数我们会面对以下几点

  • 什么是 XSS 攻击?如何防范 XSS 攻击?
  • 内容安全策略csp
  • 什么是 CSRF 攻击?如何防范 CSRF 攻击?
  • 什么是点击劫持?如何防范点击劫持?
  • SQL 注入攻击?

1. XSS

XSS,Cross-site script,跨站脚本攻击。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

它可以分为两类:反射型和持久型。

  • 反射型XSS攻击场景:用户点击嵌入恶意脚本的链接,攻击者可以获取用户的cookie信息或密码等重要信息,进行恶性操作。

解决:开启cookie的HttpOnly属性,禁止JavaScript脚本读取cookie信息。

  • 持久型XSS攻击场景:攻击者提交含有恶意脚本的请求(通常使用<script>标签),此脚本被保存在数据库中。用户再次浏览页面,包含恶意脚本的页面会自动执行脚本,从而达到攻击效果。这种攻击常见于论坛,博客等应用中。

解决:前端提交请求时,转义<为&lt,转义>为&gt;或者后台存储数据时进行特殊字符转义。

2.CSRF

CSRF,Cross-site request forgery,跨站请求伪造。这种方式是利用浏览器的cookie或服务器的session策略,盗取用户信息,模拟用户向第三方网站发送恶意请求。

再次强调一下cookie的机制:浏览器向一个域名发起http请求时(GET请求)会带上浏览器保存的关于那个域名的cookies,而不管你从哪个网站发请求。

解决方法:

  1. 同源检测

既然CSRF大多来自第三方网站,那么我们就直接禁止外域(或者不受信任的域名)对我们发起请求。可以通过origin header或者referer header判断请求源.

  1. CSRF token验证

提交请求中携带token,并且每次请求的token值都是合法的随机数

  1. 开启cookie SameSite 强校验

Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。

3. 网络请求劫持

请求劫持是指网站资源在请求过程中因为人为原因而没有加载到正确的资源。

  • DNS劫持

在浏览器输入URL,浏览器完成连接准备之后,第一件事情就是DNS查询。如果本地没有缓存,那么需要向DNS服务商请求该域名的IP地址。这个过程中如果发生恶意劫持,都导致正确的网址不能得到正确解析,且用户可能访问了一个非法服务器获取到恶意资源。

解决方案:DNS over HTTP(用 HTTP 协议来传输 DNS )

  • HTTP劫持

在用户浏览器和目标服务器之间建立的网络数据传输通道中的任何环节,比如,网关,防火墙等,发生的恶意劫持。从而在用户浏览器上展示了广告或其他内容(常见插入iframe)。最可能的劫持方就是ISP(internet service provider互联网服务商)。

解决方案: 改为https

4.SQL注入

攻击者在HTTP请求中注入恶意SQL命令,例如,drop table users,服务器用请求参数构造数据库SQL命令时,恶意SQL被执行。

解决:后台处理,例如,使用预编译语句PreparedStatement进行预处理。

感谢大佬们的无私分享

-------------本文结束感谢您的阅读-------------
没办法,总要恰饭的嘛~~