說明
初衷:
本文檔用於記錄所遇到的網站安全問題,並分類彙總,方便後期遇到類似問題,能夠快速找到解決方案,提高效率,讓程序員有更多的時間去把妹,LOL...
記錄規範:
- 標題必須清晰明瞭,方便用戶快速查找,拒絕標題黨;
- 問題放到正確的分類中;
- 記錄問題的時候先闡述問題,再列出解決方法,儘量做到有圖有真相;
- 如果有對應的資料,可以附上鍊接;
- 記錄問題提交人,方便追蹤
Apache
Cookie缺少HttpOnly、Secure標識
漏洞提示
描述
httponly是微軟對cookie做的擴展,這個主要是解決用戶的cookie可能被盜用的問題。
大家都知道,當我們去郵箱或者論壇登陸後,服務器會寫一些cookie到我們的瀏覽器,當下次再訪問其他頁面時,由於瀏覽器回自動傳遞cookie,這樣就實現了一次登陸就可以看到所有需要登陸後才能看到的內容。也就是說,實質上,所有的登陸狀態這些都是建立在cookie上的!假設我們登陸後的cookie被人獲得,那就會有暴露個人信息的危險!當然,想想,其他人怎麼可以獲得客戶的cookie?那必然是有不懷好意的人的程序在瀏覽器裏運行!如果是現在滿天飛的流氓軟件,那沒有辦法,httponly也不是用來解決這種情況的,它是用來解決瀏覽器裏javascript訪問cookie的問題。試想,一個flash程序在你的瀏覽器裏運行,就可以獲得你的cookie的!
修復方案
- 一、修改php配置文件php.ini
注意:YNCMS勿改此項,其程序內部提供支持,按照第二種方案修改即可
session.cookie_secure = 1
session.cookie_httponly = 1
- 二、修改網站cookie配置文件,以YNCMS爲例,修改/Application/Home/Conf/config.php,添加配置參數
'COOKIE_SECURE' => true, // cookie 啓用安全傳輸
'COOKIE_HTTPONLY' => true, // httponly設置
參考資料: http://www.jb51.net/article/1...
cgi-bin目錄問題
暴力解決辦法:註釋掉對應信息
apache icons目錄問題
我們如果使用了apache服務器,當我訪問http://xxx.xxx.xxx/icons/
時會自動顯示這個目錄下的所以文件列表,這行造成網站目錄信息的泄露對我們的網站安全造成威脅,在 關閉apache自動目錄列表功能的三種方法 這篇文章中的三種方法都不能禁止自動目錄列表,你如果使用網站安全監測,會提醒你發現目錄啓用了自動目錄列表功能,所以我們必須禁止它,經過測試,按如下步驟可以禁止:
打開目錄apache/conf/extra/下的文件httpd-autoindex.conf(位置可能有差異)
找到
Alias /icons/ "/xampp/apache/icons/"
<Directory "/xampp/apache/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
去掉Indexes改成
<Directory "/xampp/apache/icons">
Options MultiViews
AllowOverride None
Require all granted
</Directory>
重啓apache服務器!
暴力解決辦法就是註釋掉或者直接刪除icons目錄
啓用了OPTIONS方法
在網站根目錄目錄下創建.htaccess文件,內容如下,如果您已有其他規則,請添加到第一條規則
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(OPTIONS)
RewriteRule .* - [F]
使用Apache的重寫規則來禁用Options方法和Trace方法
在Apache配置文件httpd-conf中【vhosts-conf】添加以下代碼:
- 單獨禁用Trace方法:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
- 單獨禁用Options方法:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(OPTIONS)
RewriteRule .* - [F]
- 同時禁用Trace方法和Options方法
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
<VirtualHost *:80>
DocumentRoot "D:\wwwroot"
ServerName www.abc.com
ServerAlias abc.com
<Directory "D:\wwwroot">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
</Directory>
</VirtualHost>
啓用了TRACE Method
同啓用了OPTIONS方法處理方法相同RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
或者在httpd.conf中添加配置:TraceEnable off
X-Frame-Options頭未設置
在httpd.conf裏面增加
Header always append X-Frame-Options SAMEORIGIN
關閉目錄瀏覽權限
描述
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
options中Indexes表示當網頁不存在的時候允許索引顯示目錄中的文件
解決
將要設置的目錄對應配置參數下的Indexes刪除或者改爲-Indexes(低版本可能會報錯)
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
或者
<Directory "/var/www/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
缺少"x-content-type-options"頭
在httpd.conf裏面增加
Header always set X-Content-Type-Options nosniff
其他
允許Flash文件與任何域HTML頁面通信
描述
解決方法
將參數AllowScriptAccess設置爲never
導致頁面空行
描述:
頁面的編碼如果是UTF-8 + BOM,會在body開頭處加入一個可見的控制符,導致頁面頭部會出現一個空白。這種編碼方式一般會在windows操作系統中出現,比如記事本編輯器,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用於讓記事本等編輯器識別這個文件是否以UTF-8編碼。對於一般的文件,這樣並不會產生什麼麻煩。但對於html來說,BOM是個大麻煩。因爲瀏覽器在解析html頁面時,並不會忽略BOM,所以在解析html文件時,會把BOM作爲該文件開頭正文的一部分,這串字符也將會被直接執行(在頁面中並不顯示)出來。由此造成即使頁面的 top或者padding 設置爲0,也無法讓整個網頁緊貼瀏覽器頂部,因爲在html一開頭有這3個隱藏字符!
解決辦法:
保存文件爲utf-8