1. XSS(跨站脚本攻击)
- 什么是XSS
是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如Cookie、SessionID等,进而危害数据安全 - 常见类型:
-
反射型XSS攻击:
反射型 XSS 一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。反射型XSS通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗
-
存储型XSS:
存储型XSS是持久化的XSS攻击方式,通过用户输入个人信息或者发表文章的方式将恶意代码存储于服务器端,当其他用户再次访问页面时触发,造成XSS攻击,例如不检查输入直接拼接字符串作为数据库命令执行
-
DOM-based 型 XSS 攻击:
同样也是利用对数据源不可靠,缺乏过滤,由于开发过程中,可能部分数据需要回填到DOM中,例如href、src、data-id等标签属性,而通过构造特殊的字符串闭合原有的DOM标签,在其中注入script标签的方式造成攻击。例假设A是正常网站,B是攻击网站,a是正常网站用户,b是攻击者,假如A网站有评论功能,且会将用户的评论内容直接通过InnerHTML展示到页面上,那么b可以在评论区添加<a>,使点击者跳转到B网站,并且可以通过document.cookie来获取cookie,并作为参数一起发送给B,这样如果a点击了该链接,b就可以通过B网站获取到a的cookie
-
2. sql 注入
sql 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 sql 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询或修改,从而进一步得到或篡改相应的数据信息
3. CSRF(跨站请求伪造)
是一种劫持受信任用户向服务器发送非预期请求的攻击方式。攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的登录凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的
举例:假设A是正常网站,B是攻击网站,a是正常网站用户,b是攻击者,假如A网站有一个注销功能的api,那么b可以在B网站添加一个访问这个api的链接,如果a访问了B网站,且点击了该链接,那么就会像这个api发送请求,并带上了a自己的cookie,虽然b并不能知道这个cookie是什么,但是b可以冒充是a来把a给注销了
4. ClickJacking(点击劫持)
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的 ifiame,翻盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下,点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe的一些功能性按钮上
5. CDN劫持
(介绍篇幅可能有点长,因为我以前不太懂这个,如果不想看,可以滑到最下面)
-
什么是CDN
百度百科:CDN,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度
总结:CDN可以用来加速资源请求,其原理是分配就近的资源,对于已经加载过的资源直接从就近节点读取,进而加快网络请求速度
-
举个CDN的应用例子(别人的例子)
(先介绍几个名词,下面用到了)
- 授权DNS:
- DNS调度系统:
- 返回域名中的CNAME:CNAME即别名记录,也被称为规范名字,一般用来把域名解析到别的域名上。当需要将域名a指向另一个域名b(该域名b就相当于域名a的别名),再由域名b提供IP地址,就需要添加CNAME记录
- 负载均衡:将相同的应用部署到多台机器上。解决访问统一入口问题,我们可以在集群前面增加负载均衡设备,实现流量分发。 负载均衡的意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行
假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:
- 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
- LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
- 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。
- 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
- LDNS获取DNS返回的解析IP地址。
- 用户获取解析IP地址。
- 用户向获取的IP地址发起对该资源的访问请求。
- 判断该IP地址对应的节点是否缓存该资源
- 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。
- 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。
总结一下:就比如你公司的服务器在上海,你不能让世界各地的人都去访问那个服务器,从很远的地方来访问可能响应速度非常慢,那么我们可以在世界各个地方放置多台服务器,里面都存放资源,这样如果有人想要获取服务器资源,直接访问离自己最近的就行了,如果没有再向源站请求资源,这样可以解决响应慢的问题。但是又有个问题来了,就比如用户要访问www.a.com,域名解析得到的IP就是一个,我怎么能得到离自己最近的服务器IP呢,这里就用到了授权DNS查询
-
CDN应用场景
CDN应用广泛,支持多种行业、多种场景内容加速,例如文件下载、视音频点播、直播流媒体、全站加速、安全加速 -
CDN劫持
(上两张好图,我看概念一直没理解,这个图一看就懂了)
6. DOS(拒绝服务攻击)
其目的是使计算机或网络无法提供正常的服务。DOS的攻击方式有很多种,比如:
- SYN FLOOD
利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。如果SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续SYN请求发送,直到缓冲区中都是自己的只有SYN标记的请求 - IP欺骗
DoS攻击这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务 - 带宽DOS攻击
如果连接带宽足够大而服务器又不是很大,可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击 - 自身消耗的DOS攻击
这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段 - 塞满服务器的硬盘
通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径