點選通路msy.plus獲得更好的體驗
http基本身份驗證會從浏覽器彈出登入視窗,
簡單明了,容易了解,
對于面向終端使用者的前台來說,不夠友好,
但對于内部員工操作的背景還是很有用,通常作為一層安全措施應用。
auth_basic作為一個認證子產品,在apache和nginx中都很常用,在許多沒有自帶認證的系統中,使用nginx的auth_basic做一個簡單的認證,是常見的操作,開啟了auth_basic認證之後,在通路的時候,會提示輸入使用者名密碼進行認證。
通常和auth_basic配合使用的一個工具是htpasswd,該工具來源于httpd-tools包,主要用于生成使用者及其密碼加密檔案
但是在htpasswd在生成密碼時有一個問題
可以看到htpasswd總共有4種加密算法,分别是MD5、bcrypt、CRYPT、SHA,在httpd-tools 2.2的版本中,預設使用的是CRYPT加密算法來進行密碼加密的,而httpd-tools 2.4的版本中,預設是使用MD5來進行密碼加密的
有人說明明SHA比MD5加密要安全性高,為什麼新版本中用MD5作為預設加密算法?
在httpd-tools 2.4的圖中,最後一句話“The SHA algorithm does not use a salt and is less secure than the MD5 algorithm”翻譯一下就是,沒有加salt的SHA算法,并沒有MD5安全
salt在密碼學中,叫做鹽,是一個随機生成的字元串,在不加鹽的哈希中,有一種破解方法就是彩虹表碰撞,原始密碼通過加鹽之後再進行散列,可以有效避免彩虹表攻擊的暴力破解
安全的處理方法是,更新httpd-tools到2.4版本,然後重新生成使用者密碼對,或在htpasswd生成密鑰時,通過參數-m選擇md5加密方式生成新的使用者密碼對
這裡為了例子我們建立一個站點
僅作為示範,生産環境不能使用這種極簡單的密碼
在nginx.conf中檢查是否有對conf.d目錄的支援如不存在,添加它
說明:生産環境中,為了管理友善,會把每個server放到專用的conf檔案中,不要混在一起而全寫到nginx.conf中,修改和查找都不友善
nginx僅需要一個密碼檔案作為驗證,而該密碼檔案在何處生成并不重要,是以你隻需要一個可以生成該密鑰的方法即可
方法很多,可以用python 可以用go 或者用c
當然也可以用各種工具輔助生成,在下列生成工具中挑一個你喜歡的方式吧
使用htpasswd生成密碼
使用openssl生成密碼
使用python生成密碼
進入網站輸入正确的使用者名和密碼即可進入網站
關于nginx配置項有不了解的可以看這裡
帶你深入了解nginx基本登入認證(包含所有配置步驟和深度解析)
帶你深入了解nginx基本登入認證:使用htpasswd生成密碼
帶你深入了解nginx基本登入認證:使用openssl生成密碼
帶你深入了解nginx基本登入認證:使用python生成密碼
nginx配置禁特定路徑下的反向代理
nginx配置禁止通路目錄或禁止通路目錄下的檔案
nginx跨域處理
你的nginx登入認證安全嗎?
配置http基本驗證(Basic Auth)
Centos安裝htpasswd_Nginx中使用htpasswd
本文來自部落格園,作者:墨抒穎,轉載請注明原文連結:https://www.cnblogs.com/moshuying/p/15244850.html