如何打造一个安全满分网站

news/2024/4/29 4:53:37/文章来源:https://blog.csdn.net/weixin_34377919/article/details/88940064

继上一篇《如何打造一个全满分网站》之后,这一次我们来谈谈如何打造一个在安全方面也能打满分的网站。因为对于一个网站来讲,仅有功能是不够的,还需要考虑性能,仅有性能也不够,还需要考虑安全。

由于网站安全方面涉及因素很多,例如如何防止跨域攻击,如何防止SQL注入等等软件开发方面的安全考虑,如果真想做到全面防护的话,还需要有更专业的机构进行漏洞检测,我们这里谈的只是最基本的在传输层面的https安全。

评测工具

跟上次的思路一样,开始动手之前,我们还是先来熟悉一下评测工具,这次介绍的主要是3个网站,前2个网站类似,基本上你如果在一个网站上拿不到高分,在另一个网站也是一样;第3个网站略有不同。

又拍云网络安全监测

又拍云为了推广自己的HTTPS服务,提供了一个免费检测工具。就拿我们熟悉的segmentfault来说吧:

clipboard.png

很不幸,在安全方面完全不合格。又拍云提供的方案有两个:

  1. 直接购买又拍云HTTPS服务;
  2. 自己按照优化建议进行优化。

如果自己优化的话,其实最关键的核心问题是一点:服务器易受到CVE-2016-2107漏洞攻击,降级为F。只要解决了这个问题,评分就能上升很多。

Qualys SSL Test

另外一个工具是Qualys SSL Lab提供的免费服务,和又拍云类似,但是不推销产品。还是拿segmentfault.com来做一下实验:

clipboard.png

同样是F,不合格。根本原因还是在这个CVE-2016-2107

Security Headers

这个网站主要是用来检测网站的response header是否安全的,我们还是拿segmentfault.com来测试一下:

clipboard.png

得分也不高,有很多问题。

解决方案

CVE-2016-2107

那么,到底什么是CVE-2016-2107呢?Cloudflare给出了详细解释,不过如果你不是安全方面的专家,基本上如读天书不知所云。

粗略地来讲,CVE-2016-2107OpenSSL 1.0的一个漏洞,是2016年刚刚发现的编号为2107号漏洞。安全系统的漏洞就像人的衣服破了一个洞一样,对付漏洞的手段无非就是两个:要不然打个补丁接着穿,要不然换件新的。OpenSSL官方给出的解决方案是把OpenSSL升级到1.0.2h就行了。但是怎么升级是一个问题,如果你用yum update升的话根本也升不上去,况且就算升上去了,也于事无补,因为你的nginx软件包里用的继续还是旧版本的OpenSSL,只有用正确的参数重新编译nginx才能解决这个问题。关于如何编译nginx,可以参考我的《免费给你的网站加上蓝色小闪电》的后半部分。

但据我的实际测试发现,即使把OpenSSL升级到1.0.2h也无法解决此问题,为此直接把OpenSSL升级到了最新的1.1.0g,但造成的问题是nginx又不兼容了,为此还需要把nginx也升级到最新版本1.13.6。经过这样的升级后,你的网站穿上了新衣服,这个漏洞就算堵住了。

nginx的相关编译参数如下:

--prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/root/src/openssl-1.1.0g --user=nginx --group=nginx --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_geoip_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

按照这个方法,还顺带解决了http/2的传输问题,详见《免费给你的网站加上蓝色小闪电》一文。

ECC

解决完了CVE-2016-2107漏洞,我们来看一看证书,似乎和别人的不太一样:

clipboard.png

那么什么是RSA,什么又是椭圆曲线呢?简单来说,RSA是利用大数因数分解的困难性来增加黑客破解的难度。比如你问小明:15等于几乘以几?他可以很快答出3x5,如果你问他:51等于几乘以几?他可能就要掏出计算器来算一算,才能告诉你等于17x3。如果再问:10,497,479等于几乘以几?恐怕他拿着计算器也算不出来,正确答案是3229x3251,而实际上我们真正用于RSA的两个质数还要远大于这个数字,所以因数分解的困难性是保证RSA安全的重要前提。

然而,2015年的时候,号称有一种算法已经可以破译RSA,于是安全专家们又提出了ECC(Elliptic Curve Cryptography),中文叫作“椭圆曲线加密”算法。椭圆我们都知道,但椭圆曲线是个什么东西呢?

这是一个椭圆

1755840904721629143.jpg

下面这两个都是椭圆曲线

0021.jpg

长的根本就不像好吧,那为什么又要叫椭圆曲线呢?简单来说,椭圆曲线这个名称的来源只是和椭圆周长的计算有关,从图形上看它们没有任何关系。

那好吧,这么一条曲线怎么加密呢?

5727792a481655052539f83dc3591eec_hd.jpg

加密的公式很简单,就如上图所示:P+Q=R,假设R就是我们的公钥,如果只给你一个R,让你反推出PQ来,就像给你一个大数,让你对它进行因数分解一样困难,这就构成了ECC加密算法的安全保障。

听上去好高大上,那么我该如何获得一张椭圆曲线加密算法的证书呢?

花钱能办了的事那都不是事,重要的是我们可以免费获得!你要知道,以前一张RSA证书一年的费用是5000元,每年还要续费,这构成了很多商业公司盈利的重要来源,其中包括Symantec赛门铁克。

当你吃饭吃的很舒服的时候,市场就会出来搅局者。感谢开源软件精神,Letsencrypt砸掉了很多安全公司的饭碗。我在《letsencrypt在nginx下的配置》一文中曾经讲过如何配置Letsencrypt,后来又写过《CentOS 6.5下利用Docker使用Letsencrypt》,但是现在有更好的方法:acme.sh,你只需要安装好acme.sh

curl https://get.acme.sh | sh

然后执行:

cd .acme.sh
./acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256

就可以得到一张免费的椭圆曲线安全证书了。注意上面命令结尾这个ec-256ec是不是让你想起了什么呢?对的,这就是我们提到的椭圆曲线(elliptic curve)。

免费的证书有了,安装到你的nginx里看一下吧,证书签名算法瞬间变成了椭圆曲线!是不是立刻变得高大上了呢?重要的是还免费哦!

clipboard.png

CAA

升级完了椭圆曲线还不够,接下来我们再来看看CAA(Certification Authority Authorization),中文翻译为授权机构认证。什么是授权?什么是机构?什么又是认证

简单来说,你做了一个网站,为了安全起见,为了需要向别人证明你就是你,你需要一张网站的身份证,那么谁有权颁发这个证件呢?在中国,只有公安局有权发身份证,那么这个有权发证件,并且得到所有人认可的机构,就叫授权机构。但是互联网的世界比较乱,授权机构很多,万一要是有一个你不知道的机构,也给别人发了一张你的名字的身份证怎么办?所以为了杜绝这个隐患,你作为网站的所有者,你可以规定:只有这个授权机构颁发的证书,才是有效的证书,其它机构颁发的证书一律无效,这个就叫“授权机构认证”,以下简称CAA

CAA是需要运行在DNS服务器之上的,但是目前国内的几乎所有DNS服务提供商没有一家提供这个服务,CarterLi兄的这篇文章《给你的站点添加 DNS CAA 保护》里提到了如何给自己的网站添加CAA,可以考虑把你的DNS搬家到能提供CAA服务的厂家去做一下。

HSTS

HSTS(HTTP Strict Transport Security),中文翻译为HTTP严格传输安全,就是让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险,给你的网站安全再加一道锁。

给网站添加HSTS相对比较容易,只要在header里加一句

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

就行了。

TLS 1.3

TLS 1.2再上一个台阶,但目前还处于测试阶段,OpenSSL 1.1.1会支持,但目前还没有正式发表,所以暂时可以先不添加。你要想装也可以,这里提供详细的安装步骤。

CSP

Content Security Policy的主要作用是让你的网站只执行限定范围内的Javascript脚本,CSS以及图片,所以我们可以在nginx里作如下限制:

add_header Content-Security-Policy "script-src 'self'";

更多的关于如何设置CSP的内容可以参考阮一峰的《Content Security Policy入门教程》

X-Frame-Options

X-Frame-Options的作用是禁止别的网站iframe你的网站,在nginx里添加以下配置:

add_header X-Frame-Options "SAMEORIGIN";

X-XSS-Protection

X-XSS-Protection的作用是防止跨站脚本攻击,在nginx里添加以下配置:

add_header X-XSS-Protection "1; mode=block";

X-Content-Type-Options

X-Content-Type-Options的作用是禁止浏览器对你的网页内容进行MIME类型嗅探,而必须以你规定的方式解析网页,在nginx里添加以下配置:

add_header X-Content-Type-Options "nosniff";

总结

以上所有方案都实施之后,我们再来看一下网站安全评分:

clipboard.png

clipboard.png

Certificate拿到了满分,下面几项没有拿到满分,在Protocol Support这一项里,主要是由于没有对一些老版本的浏览器例如IE8Java 6以及Android 2做兼容,这个问题不大,我们就先不解决了,其它两项Key ExchangeCipher Strength应该是和我们使用的Letsencrypt有关,目前还不清楚具体原因,可以再研究。

无论如何,我们把一个安全得分只有F的网站,通过各种方法优化到了得分为A+,是不是小有成就感呢?你也来试一试吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_733801.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

干货|NLP、知识图谱教程、书籍、网站、工具……(附资源链接)

from:https://baijiahao.baidu.com/s?id1608257842684702878&wfrspider&forpc 来源:人工智能头条 本文多资源,建议阅读收藏。 本文整理了关于 NLP 与知识图谱的众多参考资源,涵盖内容与形式非常丰富。 [ 导读 ]本文作…

十年建站老司机带你十分钟搭建网站

本文概要: 1. 域名 域名注册 域名备案 域名解析绑定 2. 服务器 虚拟主机 windows服务器 linux服务器 3. CMS建站系统 4. 总结 在如今互联网发展迅速猛进的大环境下,网站已经成为一个企业不可缺少的网络媒介。但网站开发行业鱼龙混杂&a…

windows Server 2008 R2 IE增强安全配置正在阻止来自下列网站的内容

1、在windows Server 2008 R2上访问百度,会出现以下界面 当在Windows Sever 2008 R2中运动IE8的时候会发现默认情况下IE启用了增强的安全配置,为了方便而且是在内网的情况下我们可以关闭IE8的增强安全配置,操作很简单如下步骤。 2、进行关闭安…

为什么说企业的发展离不开网站建设?

现在是互联网科技时代,企业要发展好多都离不开网络推广,那网络推广自然就离不开网站建设。那么,下面就“为什么说企业的发展更离不开网站建设呢?”话题进行详细分析: 1.展示产品信息 企业网站是为了推广一个平台&…

svn服务器会用到哪些端口_SEO学习笔记(二):如何拓展网站关键词呢?拓展关键词会用到哪些工具呢?...

写这篇文章之前,我问自己:“为什么要做网站呢?为什么要做SEO呢?”,思考了半天!我认为,我们做网站优化无非就是想要把网站关键词做上首页,尽量的扩大网站的曝光度,以及覆盖度。可是要获得高流量&…

JSP网站开发基础总结《八》

JSP的学习总结到本篇已经八篇了,内容比较多,但都是实战,本篇最后为大家介绍一个小效果:百度分页。就是当我们遍历的数据对象较多时,这时我们就会看到了这个效果了,那他是如何实现的呢?下面我们就…

淘宝、天猫、腾讯网站系统架构

淘宝、天猫、腾讯网站系统架构 (2016-06-02 17:19:12)前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个…

robots.txt SEO 与搜索引擎

懂一点SEO的人都知道,在SEO网站优化中robots.txt文件的编写直接影响网站优化的成果。正所谓,细节决定成败,robots.txt文件要怎么写?今天小刚seo就花一点时间,专门为大家献上史上最详细的robots文件的写法解析。 一、为…

视频网站中video标签中的视频资源以blob:http呈现的探索

一、问题场景 想下载知乎视频资源,却发现视频链接是这个样子的 blob:https://v.vzuu.com/b6146956-6e52-406d-8909-f3f1b81ae461 当时一脸懵比啊 ~难道blob:https是什么牛逼的新协议?于是进行了一番探索 二、探寻结论 结论就是blob:https并不是一种协议…

Java集群--大型网站是怎样解决多用户高并发访问的

Java集群--大型网站是怎样解决多用户高并发访问的时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈&#…

LAMP架构部署和动态网站环境的配置

实验环境:操作系统:centos 7.5服务器IP:192.168.10.5运行用户:root连接工具:xshell工具web环境:Linuxapachephpmariadb(LAMP架构) 大型动态应用系统平台主要是针对于大流量、高并发网…

web前端开发项目资源网站,私家珍藏!

1.CodePen: http://codepen.io/ 网站里有很多很酷的特效,而且可以看到效果的源代码,也可以看到实现效果,是一个非常不错的前端开发学习资源网站。 这个是CodePen网站里的一个效果的源码截图,是不是很酷呀! …

前端学习网站

gotoandlearn.com 一个很棒的视频教程网站 CodePlayer: http://thecodeplayer.com/ 它的优点是 你可以看到作者是怎样一个个字母把代码打出来的… Codepen: http://codepen.io/ 这里面有很多很酷的特效,而且你还能看到它们的源代码. CSSdeck: http://cssdeck.com…

认识动态网站

之前做项目,做的前端。第一个项目的时候蠢的来(థ౪థ)σ根本不明白前后端有什么联系,所以正好跟着这波纳新的同学学一下后端!ヾ(◍∇◍)ノ゙ 主要区分动态网站和静态网站: 动态网站用PHP开发&#xff…

网站SEO优化

1、SEO(Search Enginner Optinazition)与 SEM(Search Enginner Market) SEM比如:百度浏览器搜东西出来的前几个广告,是花钱的 而SEO是为了提高网站排名但是不花钱 2、权重: 权重越大&#x…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

利用dns解析来实现网站的负载均衡

当网站的访问量大了就会考虑负载均衡,这也是每一个架构师的基本功了,其基本地位就相当于相声里的说学逗唱,活好不好就看这个了 :) 传统的负载均衡思路是单点的,不管你是硬件的还是软件的基本都是这样的原理 对于一般的需求来说&a…

谷歌搜关键字找网站漏洞合集

天前谷歌地址 https://g.alexyang.me/到GoogLe,搜索一些关键字,edit.asp?韩国肉鸡为多,多数为MSSQL数据库!2,到Google,site:cq.cninurl:asp3,利用挖掘鸡和一个ASP木马.文件名是login.asp路径组是/manage/关键词是went.asp用oror来登陆4,这个应该N多人都搞过吧。。关键字&#…

网站信息量大,该采用分页式设计还是瀑布流滚动设计?

当页面内容信息很多时,设计上应该使用分页,还是 瀑布流 无限滚动的方式呢?今天这篇好文详细分析了各大信息流网站(谷歌、Pinterest、淘宝)的做法,列举了这两种方式的优缺点和适用场景。一篇精悍简练的干货文…

前端开发需要掌握的SEO的知识点

SEO 工作的目的   seo 的工作目的是为了让网站更利于让各大搜索引擎抓取和收录,增加产品的曝光率。 1. title description keywords 标签设置 2. h1-h6 img的alt a 标签的 rel"nofollow" 3. 建立 robots.txt 文件 4. 建立网站的 sitemap 地图…