由于之前年少無知,在代碼正式運行的環(huán)境中,犯過很多的嚴(yán)重錯誤。所慶幸的是,這些嚴(yán)重的錯誤并沒有給之前服務(wù)的公司帶來嚴(yán)重的后果,但是依然細(xì)思極恐。
接下來,下面列舉一下,一些比較容易忽視的錯誤。
/.git 和 /.svn 文件夾訪問權(quán)限
在之前一個外包公司工作的時候,因為接觸到的項目很多,所以代碼管理選擇了用 git.開源中國?的私庫對代碼進(jìn)行管理。
用 git 進(jìn)行代碼部署真的很方便:
一來,歷史修改全部都有記錄。
二來,在代碼運行環(huán)境上執(zhí)行 git pull origin master 一條命令,就能更新最新代碼到運行環(huán)境,并且是一次性切換,沒有中間過渡。
在 git 帶來便利的同時,其實也帶來了隱患:

git 把所有相關(guān)信息存儲到 /.git 目錄下的文件當(dāng)中。那么如果說,服務(wù)器沒有處理對這個目錄的訪問權(quán)限的話,很可能黑帽會對整一份代碼進(jìn)行復(fù)制,可能會造成以下下嚴(yán)重后果:
1.數(shù)據(jù)庫賬號密碼泄露,導(dǎo)致數(shù)據(jù)庫泄露
2.關(guān)鍵秘鑰文件提交記錄泄露(例如支付秘鑰)
3.代碼bug嗅探,導(dǎo)致系統(tǒng)入侵。
4.可執(zhí)行文件等(.sh,.exe)
那么我們其實可以簡單的通過設(shè)置服務(wù)器程序,apache 或者 nginx 對 .git 文件夾的 訪問權(quán)限來解決這個問題。
這里以 apache 為例,修改httpd.conf

添加后,重啟 apache httpd 服務(wù) service httpd restart
得到效果:

.svn也是同樣的道理。
觸類旁通:
在下面也舉一些常用需要禁止用戶訪問的文件類型:
1. sql 文件,因為有些系統(tǒng)喜歡把 sql 備份文件存儲在運行的文件夾下。
2. log 日志文件,黑帽可以通過相關(guān)的log去分析系統(tǒng)能夠接受的攻擊類型。
3. 支付相關(guān)的秘鑰文件,這個不用多說了。
總結(jié)
跟系統(tǒng)安全,私密性相關(guān)的文件或者文件夾訪問權(quán)限,都需要多多注意一下,禁止訪問權(quán)限,免得鑄成大錯。