CodingMeUp / AboutFE

知识归纳、内容都在issue里
74 stars 14 forks source link

36、前端安全相关 #37

Open CodingMeUp opened 4 years ago

CodingMeUp commented 4 years ago

XSS攻击

XSS (Cross-site scripting) 允许恶意web用户将代码植入到提供给其它用户使用的页面中。其实在web前端方面,可以简单的理解为一种javascript代码注入, 精髓不在于“跨站”,在于“脚本”

   // 文本
   $username =  "<script>alert('侯医生');</script>"; 
   $username =  "\u003cscript\u003ealert('okok')";
   // 图片
   $imgsrc="\" onerror=\"javascript:alert('侯医生');\"";
   $username="\u003cimg src=\'\' onerror=javascript:alert(\'okok\');\u003e";
    // 导航栏 url 携带参数
   $url = "localhost:8080/id=<script>xxx<script>";

防治

最简单的办法防治办法,还是将前端输出数据都进行转义最为稳妥。比如,按照刚刚我们那个例子来说,其本质是,浏览器遇到script标签的话,则会执行其中的脚本。但是如果我们将script标签的进行转义,则浏览器便不会认为其是一个标签

CodingMeUp commented 4 years ago

CSRF攻击

Cross-site request forgery 跨站请求伪造,其实就是网站中的一些提交行为,被黑客利用,你在访问黑客的网站的时候,进行的操作,会被操作到其他网站上


   // 图片 伪造jsonp get请求
   $imgsrc="www.其他网站.com/dosomething?id=11"; 

   // 插入script post 请求
    <body>
        <button id="clickme">点我看相册</button>
        <script>
            $('#clickme').on('click', function () {
                // 用户再不知情的情况下,提交了表单,服务器这边也会以为是用户提交过来的。
                $('#myform').submit();
            });
        </script>
        <form id="myform" style="display:none;" target="myformer" method="post" action="http://myhost:8082/lab/xsrflab/submit.php">
            <input type="hidden" name="pid" value="1">
        </form>
        <iframe name="myformer" style="display:none;"></iframe>
    </body>

防治

使用POST请求,尽可能避免get请求,post

CodingMeUp commented 4 years ago

网络劫持攻击

很多的时候,我们的网站不是直接就访问到我们的服务器上的,中间会经过很多层代理,如果在某一个环节,数据被中间代理层的劫持者所截获,他们就能获取到使用你网站的用户的密码等保密数据。比如,我们的用户经常会在各种饭馆里面,连一些奇奇怪怪的wifi,如果这个wifi是黑客所建立的热点wifi,那么黑客就可以结果该用户收发的所有数据。这里,建议站长们网站都使用https进行加密。这样,就算网站的数据能被拿到,黑客也无法解开。

CodingMeUp commented 4 years ago

控制台注入代码

天猫官网控制台的警告信息,如图4.1所示,这是为什么呢?因为有的黑客会诱骗用户去往控制台里面粘贴东西(欺负小白用户不懂代码),比如可以在朋友圈贴个什么文章,说:"只要访问天猫,按下F12并且粘贴以下内容,则可以获得xx元礼品"之类的,那么有的用户真的会去操作,并且自己隐私被暴露了也不知道。

avatar

CodingMeUp commented 4 years ago

HTTPS 与 CSP

最后再简单谈谈 HTTPS 与 CSP。其实防御劫持最好的方法还是从后端入手,前端能做的实在太少。而且由于源码的暴露,攻击者很容易绕过我们的防御手段。

CSP CSP 即是 Content Security Policy,翻译为内容安全策略。这个规范与内容安全有关,主要是用来定义页面可以加载哪些资源,减少 XSS 的发生。

MDN – CSP

HTTPS 能够实施 HTTP 劫持的根本原因,是 HTTP 协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则劫持将无法轻易发生。

HTTPS,是 HTTP over SSL 的意思。SSL 协议是 Netscape 在 1995 年首次提出的用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、数据的私密性保护以及对数据完整性的校验等功能。

https://www.cnblogs.com/coco1s/p/5777260.html