web前端安全与防御

大体进行总结了一下相关知识点,如下:

一、XSS:是跨站脚本攻击(Cross-Site Scripting)的简称。

1、简介:XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。总的来说,XSS的攻击方式就是想办法“教唆”用户的浏览器去执行一些这个网页中原本不存在的前端代码。

2、分类:

1)反射型XSS攻击:非持久性跨站点脚本攻击,它是最常见的类型的XSS(数据流向为:浏览器 -> 后端 -> 浏览器)

     a、解释:非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

     b、原理:例如在一个表单的输入框中输入数据-----点击按钮即可将输入内容打印出来。(不存在任何过滤)

                      我们在输入框输入一段js代码,比如比如<script>alert('hack')</script>,

                      点击按钮后即可弹出内容

                      此时我们输如的内容直接插入到了页面中,解释为<script>标签。

2)存储型xss攻击:持久型跨站点脚本。(数据流向:浏览器 -> 后端 -> 数据库 -> 后端 -> 浏览器。)

      a、原因:它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。(每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。)

      b、举例:还是上边的例子,后台在接受到输入数据后直接存储到数据库中,那么每次查询这个值时注入的脚本就会执行。

3)dom-xss(数据流向:URL-->浏览器 ):DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

       a、原因:直接在url中插入恶意js脚本(这种XSS攻击的实现是通过对DOM树的修改而实现的。)

4、危害:

1)窃取网页浏览中的cookie值(通过script脚本获得当前页面的cookie值,通常会用到document.cookie

2)劫持流量实现恶意跳转。
 

5、防御措施:

1)对cookie的保护:对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取cookie。服务端可以设置此字段。

2)对用户输入数据的处理:

     a编码:不能对用户输入的内容都保持原样,对用户输入的数据进行字符实体编码。对于字符实体的概念可以参考文章底部给出的参考链接。

     b、解码:原样显示内容的时候必须解码,不然显示不到内容了。

     c、过滤:把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户上传的DOM属性,如onerror,移除用户上传的Style节点,iframe, script节点等。

二、CSRF(Cross Site Request Forgery):站点伪造请求

1、简介:通过在访问用户被认为已经通过身份验证的Web应用程序的页面中包含恶意代码或链接来工作。简单的说,就是攻击者可以盗用你的登陆信息,以你的身份模拟发送各种请求。

2、CSRF的原理及预防

三、SQL注入

1、简介:用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。

2、预防措施:原理及防御措施

四、cookie窃取和session劫持

原理

五、钓鱼攻击

1、简介:攻击者会发送给受害者一个合法链接,当链接被点击时,用户被导向一个似是而非的非法网站,从而达到骗取用户信任、窃取用户资料的目的。

2、防御措施:对所有的重定向操作进行审核,以避免重定向到一个危险的地方.

      1)常见解决方案是白名单,将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之;

      2)重定向token,在合法的url上加上token,重定向时进行验证。

六、HTTP Headers攻击

1、简介:HTTP协议在Response header和content之间,有一个空行,即两组CRLF(0x0D 0A)字符。这个空行标志着headers的结束和content的开始。“聪明”的攻击者可以利用这一点。只要攻击者有办法将任意字符“注入”到headers中,这种攻击就可以发生。

2、防御措施:过滤所有的response headers,除去header中出现的非法字符,尤其是CRLF。

七、拒绝服务攻击

1、简介:攻击者想办法让目标机器停止提供服务:一是使用SYN flood迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

2、防御措施:对于SYN flood:启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。

八、文件上传攻击。

1、简介:用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。

2、分类:

1)文件名攻击:上传的文件采用上传之前的文件名,可能造成客户端和服务端字符码不兼容,导致文件名乱码问题;文件名包含脚本,从而造成攻击.
2)文件后缀攻击:上传的文件的后缀可能是exe可执行程序,js脚本等文件,这些程序可能被执行于受害者的客户端,甚至可能执行于服务器上.因此我们必须过滤文件名后缀,排除那些不被许可的文件名后缀.
3)文件内容攻击:IE6有一个很严重的问题 , 它不信任服务器所发送的content type,而是自动根据文件内容来识别文件的类型,并根据所识别的类型来显示或执行文件.如果上传一个gif文件,在文件末尾放一段js攻击脚本,就有可能被执行.这种攻击,它的文件名和content type看起来都是合法的gif图片,然而其内容却包含脚本,这样的攻击无法用文件名过滤来排除,而是必须扫描其文件内容,才能识别。

3、防御措施:

1)文件上传的目录设置为不可执行。
2)判断文件类型。在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行文件的后缀名称改为图片或其他后缀类型,诱导用户执行。
3)对上传的文件类型进行白名单校验,只允许上传可靠类型。
4)上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加攻击成本。
5)限制上传文件的大小。
6)单独设置文件服务器的域名。
 

猜你喜欢

转载自blog.csdn.net/weixin_39963132/article/details/84287717