自检:前端知识清单——前端安全

自检:前端知识清单——前端安全_第1张图片

前言

题目来自ConardLi的blog
写的是自己的题解,水平有限,所以仅供参考
代码会整合在github,觉得有帮助就给个star吧~

正文

八、项目和业务

前端安全

1.XSS攻击的原理、分类、具体案例,前端如何防御

XSS

攻击者将恶意代码植入到提供给其它用户使用的页面中。

存储型XSS:
自检:前端知识清单——前端安全_第2张图片

例如说我将上述的代码在百度开了个页面提问,如果他没有对我的内容进行处理,直接存储到数据库,那么下一次当其他用户访问我这个问题的时候,服务器从数据库读取后然后响应给客户端,浏览器执行了这段脚本,就会将cookie展现出来,这就是典型的存储XSS。

但是百度肯定是做好了防范的了。

反射型XSS

主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。

防御XSS的方式:
  • 过滤特殊字符
  • 使用HTTP头指定类型


    自检:前端知识清单——前端安全_第3张图片

2.CSRF攻击的原理、具体案例,前端如何防御

简介:

跨站请求伪造
受害者必须依次完成两个步骤:
1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B

例如说 我在某银行网站上获取了用户信息认证,某银行网站的转钱请求接口如下


自检:前端知识清单——前端安全_第4张图片

这个时候我访问了危险网站B,好巧不巧,网站B已经放了一个陷阱等你去踩,这个时候你就会发现你的1000块钱不翼而飞了。


自检:前端知识清单——前端安全_第5张图片

POST请求同理,网站B也会伪造POST请求。

解决方法:
  • token令牌
  • 验证码
  • 双重cookie
  • 附加hash值

3.HTTP劫持、页面劫持的原理、防御措施

在用户的客户端与其要访问的服务器经过网络协议协调后,二者之间建立了一条专用的数据通道,用户端程序在系统中开放指定网络端口用于接收数据报文,服务器端将全部数据按指定网络协议规则进行分解打包,形成连续数据报文。

用户端接收到全部报文后,按照协议标准来解包组合获得完整的网络数据。其中传输过程中的每一个数据包都有特定的标签,表示其来源、携带的数据属性以及要到何处,所有的数据包经过网络路径中ISP的[路由器]传输接力后,最终到达目的地,也就是客户端。

HTTP劫持是在使用者与其目的网络服务所建立的专用数据通道中,监视特定数据信息,提示当满足设定的条件时,就会在正常的数据流中插入精心设计的网络数据报文目的是让用户端程序解释“错误”的数据,并以弹出新窗口的形式在使用者界面展示宣传性广告或者直接显示某网站的内容。

4.SQL注入

攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。


自检:前端知识清单——前端安全_第6张图片

这是最常见的 SQL注入攻击,当我们输如用户名 admin ,然后密码输如' OR '1'=1='1的时候,我们在查询用户名和密码是否正确的时候,这个时候1=1是成立,自然就跳过验证了。

预防SQL注入:

  • 在Java中,我们可以使用预编译语句(PreparedStatement),这样的话即使我们使用 SQL语句伪造成参数,到了服务端的时候,这个伪造 SQL语句的参数也只是简单的字符,并不能起到攻击的作用。
  • 对进入数据库的特殊字符('"\尖括号&*;等)进行转义处理,或编码转换。
    在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
  • 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。

5.DDOS劫持

TCP协议中的SYN攻击

简介

在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.

SYN攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。

如何预防DDOS

阿里巴巴的安全团队在实战中发现,DDoS 防御产品的核心是检测技术和清洗技术。检测技术就是检测网站是否正在遭受 DDoS 攻击,而清洗技术就是清洗掉异常流量。而检测技术的核心在于对业务深刻的理解,才能快速精确判断出是否真的发生了 DDoS 攻击。清洗技术对检测来讲,不同的业务场景下要求的粒度不一样。

你可能感兴趣的:(自检:前端知识清单——前端安全)