代码笔记

190218|DDos 及收录相关的问题

2019-02-18  本文已影响0人  贝一平

DDos 攻击及解决方案

什么是 DDos 攻击

DDOS =Distributed (分布式)+ DOS (denial of service 停止服务)
表示这种攻击的目的,就是使得服务中断。

对于 DDos 攻击,阮老师说的很清楚了。
比如说你开了一个餐厅,店面很小只能容纳30人,正常情况下你进了饭店,坐下就可以点餐,比较忙的时候可能得等一会儿。

但是 DDos 攻击就相当于你不交保护费,流氓就带着300个人来闹事儿。每个人都不提保护费的事儿,不过就是大家都饿了,要吵闹着一起点餐罢了。

这种情况下,你的饭店就瘫痪了。你只能挂牌暂停营业。但是前门堵住了,流氓又从后门来了,你把后门堵上了,流氓又砸了窗子进来了。

你的饭店被流氓围得水泄不通,而正想来你饭店吃饭的人都被堵在了外面。这就是 DDos 攻击。

它在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线。

DDos是一类攻击,比较常见的攻击类型是 CC 攻击。

它就是简单粗暴地送来大量正常的请求,超出服务器的最大承受量,导致宕机

DDos 攻击的解决方案是什么

1. 一个备份网站,或者一个临时主页

备份网站是在你的服务器收到攻击时可以立刻切换,保持正常提供服务。
当然如果条件不允许,你至少要有一个页面告诉用户你们现在不能提供服务。

2. Http 请求拦截(封 IP)

封 IP 从三个方面实现,按照实现效果由好到坏排序为:

2.1. 专用硬件 服务商提供的防火墙服务
2.2. 服务器 操作系统的防火墙软件如 Linux中的 iptables。
2.3. Web 服务器 如 nginx 配置文件

Nuxt.js框架中如何实现百度收录

一般我们知道,在 Nuxt.js框架中要想修改 head标签,需要需改 nuxt.config.js文件

 head: {
    title: '首页',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: pkg.description },
      { name: 'renderer', content: 'webkit'},
      { name: "baidu-site-verification", content:"zCozEgX8iZ" }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
      { rel: 'stylesheet', href: 'https://cdn.bootcss.com/minireset.css/0.0.2/minireset.min.css'}
    ]
  }

而当你的网站需要做百度收录(https://ziyuan.baidu.com/)的时候。这种方式就有可能导致在验证链接的时候验证失败。
因为页面在渲染后生成的代码会多出如下的内容

data-n-head="true"

如何解决这个问题。
在项目的根目录下创建一个 app.html作为模板

<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
  <head>
    <meta name="baidu-site-verification" content="zCozEgX8ij" />
    {{ HEAD }}
  </head>
  <body {{ BODY_ATTRS }}>
    {{ APP }}
    <script>
      // 百度收录
      (function(){
          var bp = document.createElement('script');
          var curProtocol = window.location.protocol.split(':')[0];
          if (curProtocol === 'https') {
              bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
          }
          else {
              bp.src = 'http://push.zhanzhang.baidu.com/push.js';
          }
          var s = document.getElementsByTagName("script")[0];
          s.parentNode.insertBefore(bp, s);
      })();
    </script>
  </body>
</html>

这个时候再去验证就 OK 了。

上一篇 下一篇

猜你喜欢

热点阅读