国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何打造一個(gè)安全滿分網(wǎng)站

張巨偉 / 1273人閱讀

摘要:繼上一篇如何打造一個(gè)全滿分網(wǎng)站之后,這一次我們來談?wù)勅绾未蛟煲粋€(gè)在安全方面也能打滿分的網(wǎng)站。無論如何,我們把一個(gè)安全得分只有的網(wǎng)站,通過各種方法優(yōu)化到了得分為,是不是小有成就感呢你也來試一試吧

繼上一篇《如何打造一個(gè)全滿分網(wǎng)站》之后,這一次我們來談?wù)勅绾未蛟煲粋€(gè)在安全方面也能打滿分的網(wǎng)站。因?yàn)閷τ谝粋€(gè)網(wǎng)站來講,僅有功能是不夠的,還需要考慮性能,僅有性能也不夠,還需要考慮安全。

由于網(wǎng)站安全方面涉及因素很多,例如如何防止跨域攻擊,如何防止SQL注入等等軟件開發(fā)方面的安全考慮,如果真想做到全面防護(hù)的話,還需要有更專業(yè)的機(jī)構(gòu)進(jìn)行漏洞檢測,我們這里談的只是最基本的在傳輸層面的https安全。

評測工具

跟上次的思路一樣,開始動手之前,我們還是先來熟悉一下評測工具,這次介紹的主要是3個(gè)網(wǎng)站,前2個(gè)網(wǎng)站類似,基本上你如果在一個(gè)網(wǎng)站上拿不到高分,在另一個(gè)網(wǎng)站也是一樣;第3個(gè)網(wǎng)站略有不同。

又拍云網(wǎng)絡(luò)安全監(jiān)測

又拍云為了推廣自己的HTTPS服務(wù),提供了一個(gè)免費(fèi)檢測工具。就拿我們熟悉的segmentfault來說吧:

很不幸,在安全方面完全不合格。又拍云提供的方案有兩個(gè):

直接購買又拍云HTTPS服務(wù);

自己按照優(yōu)化建議進(jìn)行優(yōu)化。

如果自己優(yōu)化的話,其實(shí)最關(guān)鍵的核心問題是一點(diǎn):服務(wù)器易受到CVE-2016-2107漏洞攻擊,降級為F。只要解決了這個(gè)問題,評分就能上升很多。

Qualys SSL Test

另外一個(gè)工具是Qualys SSL Lab提供的免費(fèi)服務(wù),和又拍云類似,但是不推銷產(chǎn)品。還是拿segmentfault.com來做一下實(shí)驗(yàn):

同樣是F,不合格。根本原因還是在這個(gè)CVE-2016-2107。

Security Headers

這個(gè)網(wǎng)站主要是用來檢測網(wǎng)站的response header是否安全的,我們還是拿segmentfault.com來測試一下:

得分也不高,有很多問題。

解決方案 CVE-2016-2107

那么,到底什么是CVE-2016-2107呢?Cloudflare給出了詳細(xì)解釋,不過如果你不是安全方面的專家,基本上如讀天書不知所云。

粗略地來講,CVE-2016-2107OpenSSL 1.0的一個(gè)漏洞,是2016年剛剛發(fā)現(xiàn)的編號為2107號漏洞。安全系統(tǒng)的漏洞就像人的衣服破了一個(gè)洞一樣,對付漏洞的手段無非就是兩個(gè):要不然打個(gè)補(bǔ)丁接著穿,要不然換件新的。OpenSSL官方給出的解決方案是把OpenSSL升級到1.0.2h就行了。但是怎么升級是一個(gè)問題,如果你用yum update升的話根本也升不上去,況且就算升上去了,也于事無補(bǔ),因?yàn)槟愕?b>nginx軟件包里用的繼續(xù)還是舊版本的OpenSSL,只有用正確的參數(shù)重新編譯nginx才能解決這個(gè)問題。關(guān)于如何編譯nginx,可以參考我的《免費(fèi)給你的網(wǎng)站加上藍(lán)色小閃電》的后半部分。

但據(jù)我的實(shí)際測試發(fā)現(xiàn),即使把OpenSSL升級到1.0.2h也無法解決此問題,為此直接把OpenSSL升級到了最新的1.1.0g,但造成的問題是nginx又不兼容了,為此還需要把nginx也升級到最新版本1.13.6。經(jīng)過這樣的升級后,你的網(wǎng)站穿上了新衣服,這個(gè)漏洞就算堵住了。

nginx的相關(guān)編譯參數(shù)如下:

--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"

按照這個(gè)方法,還順帶解決了http/2的傳輸問題,詳見《免費(fèi)給你的網(wǎng)站加上藍(lán)色小閃電》一文。

ECC

解決完了CVE-2016-2107漏洞,我們來看一看證書,似乎和別人的不太一樣:

那么什么是RSA,什么又是橢圓曲線呢?簡單來說,RSA是利用大數(shù)因數(shù)分解的困難性來增加黑客破解的難度。比如你問小明:15等于幾乘以幾?他可以很快答出3x5,如果你問他:51等于幾乘以幾?他可能就要掏出計(jì)算器來算一算,才能告訴你等于17x3。如果再問:10,497,479等于幾乘以幾?恐怕他拿著計(jì)算器也算不出來,正確答案是3229x3251,而實(shí)際上我們真正用于RSA的兩個(gè)質(zhì)數(shù)還要遠(yuǎn)大于這個(gè)數(shù)字,所以因數(shù)分解的困難性是保證RSA安全的重要前提。

然而,2015年的時(shí)候,號稱有一種算法已經(jīng)可以破譯RSA,于是安全專家們又提出了ECC(Elliptic Curve Cryptography),中文叫作“橢圓曲線加密”算法。橢圓我們都知道,但橢圓曲線是個(gè)什么東西呢?

這是一個(gè)橢圓

下面這兩個(gè)都是橢圓曲線

長的根本就不像好吧,那為什么又要叫橢圓曲線呢?簡單來說,橢圓曲線這個(gè)名稱的來源只是和橢圓周長的計(jì)算有關(guān),從圖形上看它們沒有任何關(guān)系。

那好吧,這么一條曲線怎么加密呢?

加密的公式很簡單,就如上圖所示:P+Q=R,假設(shè)R就是我們的公鑰,如果只給你一個(gè)R,讓你反推出PQ來,就像給你一個(gè)大數(shù),讓你對它進(jìn)行因數(shù)分解一樣困難,這就構(gòu)成了ECC加密算法的安全保障。

聽上去好高大上,那么我該如何獲得一張橢圓曲線加密算法的證書呢?

花錢能辦了的事那都不是事,重要的是我們可以免費(fèi)獲得!你要知道,以前一張RSA證書一年的費(fèi)用是5000元,每年還要續(xù)費(fèi),這構(gòu)成了很多商業(yè)公司盈利的重要來源,其中包括Symantec賽門鐵克。

當(dāng)你吃飯吃的很舒服的時(shí)候,市場就會出來攪局者。感謝開源軟件精神,Letsencrypt砸掉了很多安全公司的飯碗。我在《letsencrypt在nginx下的配置》一文中曾經(jīng)講過如何配置Letsencrypt,后來又寫過《CentOS 6.5下利用Docker使用Letsencrypt》,但是現(xiàn)在有更好的方法:acme.sh,你只需要安裝好acme.sh

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

然后執(zhí)行:

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

就可以得到一張免費(fèi)的橢圓曲線安全證書了。注意上面命令結(jié)尾這個(gè)ec-256,ec是不是讓你想起了什么呢?對的,這就是我們提到的橢圓曲線(elliptic curve)。

免費(fèi)的證書有了,安裝到你的nginx里看一下吧,證書簽名算法瞬間變成了橢圓曲線!是不是立刻變得高大上了呢?重要的是還免費(fèi)哦!

CAA

升級完了橢圓曲線還不夠,接下來我們再來看看CAA(Certification Authority Authorization),中文翻譯為授權(quán)機(jī)構(gòu)認(rèn)證。什么是授權(quán)?什么是機(jī)構(gòu)?什么又是認(rèn)證?

簡單來說,你做了一個(gè)網(wǎng)站,為了安全起見,為了需要向別人證明你就是你,你需要一張網(wǎng)站的身份證,那么誰有權(quán)頒發(fā)這個(gè)證件呢?在中國,只有公安局有權(quán)發(fā)身份證,那么這個(gè)有權(quán)發(fā)證件,并且得到所有人認(rèn)可的機(jī)構(gòu),就叫授權(quán)機(jī)構(gòu)。但是互聯(lián)網(wǎng)的世界比較亂,授權(quán)機(jī)構(gòu)很多,萬一要是有一個(gè)你不知道的機(jī)構(gòu),也給別人發(fā)了一張你的名字的身份證怎么辦?所以為了杜絕這個(gè)隱患,你作為網(wǎng)站的所有者,你可以規(guī)定:只有這個(gè)授權(quán)機(jī)構(gòu)頒發(fā)的證書,才是有效的證書,其它機(jī)構(gòu)頒發(fā)的證書一律無效,這個(gè)就叫“授權(quán)機(jī)構(gòu)認(rèn)證”,以下簡稱CAA。

CAA是需要運(yùn)行在DNS服務(wù)器之上的,但是目前國內(nèi)的幾乎所有DNS服務(wù)提供商沒有一家提供這個(gè)服務(wù),CarterLi兄的這篇文章《給你的站點(diǎn)添加 DNS CAA 保護(hù)》里提到了如何給自己的網(wǎng)站添加CAA,可以考慮把你的DNS搬家到能提供CAA服務(wù)的廠家去做一下。

HSTS

HSTS(HTTP Strict Transport Security),中文翻譯為HTTP嚴(yán)格傳輸安全,就是讓瀏覽器強(qiáng)制使用HTTPS與網(wǎng)站進(jìn)行通信,以減少會話劫持風(fēng)險(xiǎn),給你的網(wǎng)站安全再加一道鎖。

給網(wǎng)站添加HSTS相對比較容易,只要在header里加一句

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

就行了。

TLS 1.3

TLS 1.2再上一個(gè)臺階,但目前還處于測試階段,OpenSSL 1.1.1會支持,但目前還沒有正式發(fā)表,所以暫時(shí)可以先不添加。你要想裝也可以,這里提供詳細(xì)的安裝步驟。

CSP

Content Security Policy的主要作用是讓你的網(wǎng)站只執(zhí)行限定范圍內(nèi)的Javascript腳本,CSS以及圖片,所以我們可以在nginx里作如下限制:

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

更多的關(guān)于如何設(shè)置CSP的內(nèi)容可以參考阮一峰的《Content Security Policy入門教程》

X-Frame-Options

X-Frame-Options的作用是禁止別的網(wǎng)站iframe你的網(wǎng)站,在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的作用是禁止瀏覽器對你的網(wǎng)頁內(nèi)容進(jìn)行MIME類型嗅探,而必須以你規(guī)定的方式解析網(wǎng)頁,在nginx里添加以下配置:

add_header X-Content-Type-Options "nosniff";
總結(jié)

以上所有方案都實(shí)施之后,我們再來看一下網(wǎng)站安全評分:

Certificate拿到了滿分,下面幾項(xiàng)沒有拿到滿分,在Protocol Support這一項(xiàng)里,主要是由于沒有對一些老版本的瀏覽器例如IE8,Java 6以及Android 2做兼容,這個(gè)問題不大,我們就先不解決了,其它兩項(xiàng)Key ExchangeCipher Strength應(yīng)該是和我們使用的Letsencrypt有關(guān),目前還不清楚具體原因,可以再研究。

無論如何,我們把一個(gè)安全得分只有F的網(wǎng)站,通過各種方法優(yōu)化到了得分為A+,是不是小有成就感呢?你也來試一試吧!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39692.html

相關(guān)文章

  • 前端最實(shí)用書簽(持續(xù)更新)

    摘要:前言一直混跡社區(qū)突然發(fā)現(xiàn)自己收藏了不少好文但是管理起來有點(diǎn)混亂所以將前端主流技術(shù)做了一個(gè)書簽整理不求最多最全但求最實(shí)用。 前言 一直混跡社區(qū),突然發(fā)現(xiàn)自己收藏了不少好文但是管理起來有點(diǎn)混亂; 所以將前端主流技術(shù)做了一個(gè)書簽整理,不求最多最全,但求最實(shí)用。 書簽源碼 書簽導(dǎo)入瀏覽器效果截圖showImg(https://segmentfault.com/img/bVbg41b?w=107...

    sshe 評論0 收藏0
  • ELSE 技術(shù)周刊(2017.11.13期)

    摘要:騰訊空間超分辨率技術(shù)為用戶節(jié)省流量,處理效果和速度超谷歌技術(shù)在的標(biāo)準(zhǔn)下,處理速度在提升了,處理效果也有明顯提升。此外,也是業(yè)界首次實(shí)現(xiàn)移動端使用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行超分辨率,并保證圖片能夠?qū)崟r(shí)進(jìn)行處理。值得一提的是的對應(yīng)指標(biāo)也在名單里。 團(tuán)隊(duì)分享 魔幻語言 JavaScript 系列之 call、bind 以及上下文 從一行代碼來看看 JavaScript 是一門多么魔幻的語言,順便談?wù)?...

    caohaoyu 評論0 收藏0
  • 如何系統(tǒng)地自學(xué) Python?

    摘要:這里推薦一本書源碼剖析源碼剖析豆瓣這本書把源碼中最核心的部分,給出了詳細(xì)的闡釋,不過閱讀此書需要對語言內(nèi)存模型和指針有著很好的理解。   是否非常想學(xué)好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔(dān)心學(xué)習(xí)成本太高,心里默默敲著退堂鼓?   幸運(yùn)的是,Python 是一門初學(xué)者友好的編程語言,想要完全掌握它,你不必花上太多的時(shí)間和精力。   Python 的設(shè)計(jì)哲學(xué)之一就是...

    zgbgx 評論0 收藏0
  • 前端性能優(yōu)化

    摘要:端優(yōu)談?wù)勱P(guān)于前端的緩存的問題我們都知道對頁面進(jìn)行緩存能夠有利于減少請求發(fā)送,從而達(dá)到對頁面的優(yōu)化。而作為一名有追求的前端,勢必要力所能及地優(yōu)化我們前端頁面的性能。這種方式主要解決了淺談前端中的過早優(yōu)化問題過早優(yōu)化是萬惡之源。 優(yōu)化向:單頁應(yīng)用多路由預(yù)渲染指南 Ajax 技術(shù)的出現(xiàn),讓我們的 Web 應(yīng)用能夠在不刷新的狀態(tài)下顯示不同頁面的內(nèi)容,這就是單頁應(yīng)用。在一個(gè)單頁應(yīng)用中,往往只有一...

    Dean 評論0 收藏0

發(fā)表評論

0條評論

張巨偉

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<