站点安全需求:

  1. 防盗链(保护站点资源)
  2. 防止一些乱七八糟的爬虫与非法访问
  3. 保证表单安全(SSL)
  4. 启动一个比较弱的cookie
  5. 启动Robots协议
  6. 去除弱爬虫(使用短连接访问动态文件)

实现:
一、防盗链(除了本站点、谷歌、百度才能获取资源,其他的全部转向到自己站点)
在nginx主机配置中的server中添加代码:

valid_referers none blocked *.kjwoo.cn server_names ~\.google\. ~\.baidu\.;
if ($invalid_referer){
    return 301 $http_referer;
}

二、防止乱七八糟的访问(返回403错误)
在nginx主机配置中的server中添加代码:

if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$"){
        return 403;
 }

3、保证表单安全(SSL)
在nginx主机配置中的server中添加代码:

ssl_certificate /etc/nginx/ssl/www.kjwoo.cn/me.crt;
ssl_certificate_key /etc/nginx/ssl/www.kjwoo.cn/me.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

四、启动cookie (第一次访问限制速度为:128k)
在nginx主机配置中的server中添加代码:

if ($cookie_kanjin != "kanjin$remote_addr"){
    limit_rate 128;
    add_header Set-Cookie "kanjin=kanjin$remote_addr";
    return 302 $scheme://$host$request_uri;
}

五、启动Robots协议(允许所有爬虫,但是不能爬/admin目录下面的资源)
在网站跟目录添加:robots.txt:

User-agent:*
Disallow:/admin

六、去除弱爬虫(使用短连接访问动态文件)
在网站的入口文件中添加判断(如果符合就直接重定向到百度)-以PHP为例子

if($_SERVER['HTTP_CONNECTION'] != 'keep-alive'){
    header("Location:https://www.baidu.com");exit;//重定向到百度
}

标签: none

添加新评论