網站常見安全問題記錄(持續更新)
Apache
說明 初衷:
本文檔用于記錄所遇到的網站安全問題,并分類匯總,方便后期遇到類似問題,能夠快速找到解決方案,提高效率,讓程序員有更多的時間去把妹,LOL...
記錄規范:
標題必須清晰明了,方便用戶快速查找,拒絕標題黨;
問題放到正確的分類中;
記錄問題的時候先闡述問題,再列出解決方法,盡量做到有圖有真相;
如果有對應的資料,可以附上鏈接;
記錄問題提交人,方便追蹤
Apache Cookie缺少HttpOnly、Secure標識 漏洞提示
描述
httponly是微軟對cookie做的擴展,這個主要是解決用戶的cookie可能被盜用的問題。
大家都知道,當我們去郵箱或者論壇登陸后,服務器會寫一些cookie到我們的瀏覽器,當下次再訪問其他頁面時,由于瀏覽器回自動傳遞cookie,這樣就實現了一次登陸就可以看到所有需要登陸后才能看到的內容。也就是說,實質上,所有的登陸狀態這些都是建立在cookie上的!假設我們登陸后的cookie被人獲得,那就會有暴露個人信息的危險!當然,想想,其他人怎么可以獲得客戶的cookie?那必然是有不懷好意的人的程序在瀏覽器里運行!如果是現在滿天飛的流氓軟件,那沒有辦法,httponly也不是用來解決這種情況的,它是用來解決瀏覽器里java script訪問cookie的問題。試想,一個flash程序在你的瀏覽器里運行,就可以獲得你的cookie的!
修復方案
一、修改php配置文件php.ini
session.cookie_secure = 1
session.cookie_httponly = 1
暴力解決辦法:注釋掉對應信息
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
錯誤頁面WEB應用服務器版本泄漏
修復方法:
關閉目錄瀏覽權限 描述
<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
jQuery版本警告
導致頁面空行 描述:
頁面的編碼如果是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
建議不要用記事本打開開發文件