網站常見安全問題記錄(持續更新)

說明

初衷:

本文檔用於記錄所遇到的網站安全問題,並分類彙總,方便後期遇到類似問題,能夠快速找到解決方案,提高效率,讓程序員有更多的時間去把妹,LOL...

記錄規範:

  1. 標題必須清晰明瞭,方便用戶快速查找,拒絕標題黨;
  2. 問題放到正確的分類中;
  3. 記錄問題的時候先闡述問題,再列出解決方法,儘量做到有圖有真相;
  4. 如果有對應的資料,可以附上鍊接;
  5. 記錄問題提交人,方便追蹤

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頁面通信

描述

clipboard.png

解決方法

將參數AllowScriptAccess設置爲never

&#65279導致頁面空行

描述:

頁面的編碼如果是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

建議不要用記事本打開開發文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章