2012-07-23 102 views
1

因此,我正在爲我的網站構建一個GUI管理區域。我將是唯一一個登錄,它會顯示從我的數據庫乾淨(可打印)的信息佈局。保護我的網站管理區域

這是我在做的安全。如果你認爲這很好,我可以改進,請告訴我。在所有頁面

  1. 頭檢查admin == true或死亡/重定向
  2. ,因爲我家裏有一個專用的IP,我只會從家裏登錄。我做了所有頁面,包括登錄表單頁面檢查我的IP $_SERVER['REMOTE_ADDR'];!=標題重定向
  3. 我的登錄腳本在dir700在文件夾權限。
  4. 我的登錄名和密碼包含10個字母,數字和特殊字符組合。 PW爲regex
  5. 我的登錄腳本檢查之前sql存儲爲SHA2 HASH和我的憑據存儲在一個單獨的管理表
  6. 整個網站的SSL。

那麼這是安全的嗎?我可以做更多嗎?這是否過分矯枉過正?請分享您的意見和建議(特別是關於我的IP檢查可以在被規避?)

用來逃避糟糕的數據 - 在每場連同regex

function escape_data ($data) { 
    if (function_exists(‘mysql_real_escape_string’)) { 
     global $dbc; 

     $data = mysql_real_escape_string (trim($data), $dbc); 
     $data = strip_tags($data); 
} else { 
     $data = mysql_escape_string (trim($data)); 
     $data = strip_tags($data); 
     } 
     return $data; 

    } 
+0

在顯示數據之前,您是否正確地轉義了數據庫數據?如果您有XSS漏洞,所有這些好的安全性都是毫無價值的。 – 2012-07-23 21:37:28

+0

你在#1上的含義是什麼?這是如何發送的。 #5使得它聽起來像您有可能想要研究的SQL注入問題。 – Cfreak 2012-07-23 21:38:06

+0

是以純文本形式存儲的密碼嗎? – colonelclick 2012-07-23 21:41:45

回答

0
  • 您是否還設置了在your cookies上安全,域名和http唯一標誌?對正則表達式SQL之前

我的登錄腳本檢查和我的憑據存儲在一個單獨的管理表

而且,請不要使用mysql_*功能的新代碼。他們不再被維護,社區已經開始了deprecation process。請參閱red box?相反,您應該瞭解prepared statements並使用PDOMySQLi。如果你不能決定,this article將有助於選擇。如果你在意學習,here is a good PDO tutorial

P.S.據我所知$_SERVER['REMOTE_ADDR']變量使用起來相當安全,因爲我發現被攻擊的唯一方法是由攻擊者通過您的機器代理或欺騙ip。並且(糾正我錯誤時)都很難做到。

P.S. 2:

是看你使用global在你的代碼,也請停止使用該:-)有關此表this talk關於依賴注入和一般SOLID programming更多信息。與安全無關,而只是編程的最佳實踐。

+0

對於暴力強制我阻止一個reCaptcha用於失敗的嘗試超過3 - 假設有人能夠模擬我的IP – fyz 2012-07-23 21:41:07

+0

我寫了一個函數來逃脫壞數據和正則表達式填充到 – fyz 2012-07-23 21:41:54

+0

@FabioAnselmo所以你沒有使用準備聲明? – PeeHaa 2012-07-23 21:43:40

2

什麼都沒有是管理頁面的矯枉過正。你需要儘可能多的安全性。

至於你的方法,大部分都是相當不錯的,但有些建議:

  • 設置chmod 700不會阻止其他人至少訪問管理頁面(我假定這就是你正在使用它),因爲它是訪問文件的Web服務器,無論誰在發送HTTP請求。
  • 而不是檢查$_SERVER['REMOTE_ADDR'],它可能更安全(更簡單),只是創建一個唯一的用戶SSL證書,並只允許具有該用戶證書(即您的)的計算機訪問該網站。這可以在您的Apache安裝程序中完成(如果您設法設置SSL,則可以返回並在您的SSL上設置用戶證書),解決chmod問題,並防止人們欺騙您的IP進入管理頁面。
  • 如果您不需要通過SSH連接到家用計算機,請禁用SSH守護進程。這將(希望)阻止其他人將您的計算機定位到您的服務器之後。

這些是我能想到的第一件事。當他們來找我的時候,我會添加更多。

編輯:對,記錄!日誌一切發生在您的管理頁面上。一切。對於SSL,對於請求,對於數​​據庫訪問,對於一切。然後得到一個日誌觀看節目(例如:logwatch)以觀看它的可疑活動。

+0

我同意沒有什麼矯枉過正的..特別是像我這樣的偏執狂。謝謝你的提示。我將研究該SSL設置以查看它是否對我可用。這是在一個共享服務器上..不知道我是否可以訪問SSH(不知道是什麼......需要讀取/ thx的提示) – fyz 2012-07-23 21:44:36

+0

@FabioAnselmo請參閱編輯。 (摘要?記錄日誌記錄日誌記錄日誌記錄。)另外,SSH用於遠程訪問您的計算機 - 所以如果您沒有SSH,請確保其他遠程訪問協議沒有運行(或者它們僅限於當你想要它們時運行)。 – Palladium 2012-07-23 21:50:38

+0

真棒..我應該在哪裏保存這些日誌?我的理論是,任何人都足夠聰明,足以聰明地編輯/擦除日誌...... – fyz 2012-07-23 21:53:22

0

請確保您使用SQL準備語句,使用暴力破解保護(如果有人在您的PC上獲得代理服務器)並且不使用SHA2。 SHA2是用於哈希密碼的一種可怕的無用方法。查看crypt函數或使用pkbdf,或至少;一個原始sha512。 (請參閱「散列」功能)

+0

嗯,我把'SHA2'和我自己的'SALT'連接起來,這真的太可怕了嗎? – fyz 2012-07-23 21:56:34

+0

是的。它仍然可以被破壞,並且非常不安全。 – Lusitanian 2012-07-23 22:35:03