2010-02-26 50 views
1

前段時間我創建了這個基於LAMP的web。當時我寫了我自己的用戶驗證和訪問控制系統。它檢查用戶是否使用正確的密碼登錄,以及他/她是否具有訪問給定頁面的正確權限級別。狀態信息通過PHP會話進行處理,而用戶名,被醃製,散列密碼和用戶級別存儲在MySQL後端。所有的用戶輸入都已經過清理等。用戶必須訪問站點wtith SSL。PHP中的身份驗證/訪問控制

問題是,我開始第二次猜測自己,並對安全性變得偏執。所以我正在尋找改進它的方法。

你能不能給我建議:

  • 的安全測試一些綜合性名單,我可以實現和對其運行
  • 最佳實踐實現這種系統

是有一個強大的開源框架或庫集,你可以推薦使用,而不是一個家庭成長的?傳統觀點認爲,採用成熟,經過測試的系統通常比從頭開始編寫自己的系統要好。你會推薦什麼?

回答

3

1)由於您已經從頭開始編寫自己的代碼,所以不會浪費時間和精力整合新的外部開源框架。 其他人編寫的代碼可能並不比您的代碼更好,而且您可能無法完全理解如何正確集成它,因此您可能會爲應用程序添加更多安全漏洞。

2)這是一個很好的和短的3頁指南(不幸的是它是意大利語,但你可以使用谷歌翻譯工具欄翻譯所有頁面) 無論如何,從你說你不似乎是一個newby PHP編程,我會建議:

  • 消毒輸入(但你說你沒有)使用
  • 在與DB
  • php.ini的配置玩的時候至少addslshes(或mysql_real_escape_string):REGISTER_GLOBALS應該是關
  • 車關於如何設置ERROR_REPORTING,它可能在遇到錯誤時打印出私人數據
+0

請您詳細介紹'REGISTER_GLOBALS'嗎?我對它的作用以及它如何危及安全性感興趣。 – casraf 2010-02-28 11:08:16

+0

請閱讀此處:http://php.net/manual/en/security.globals.php :)實際上它從5.3.0開始已被棄用,但直到6.0時纔會被刪除,所以許多Web服務器可能會設置它通過默認打開。 – 2010-02-28 11:15:17

+0

謝謝:)我應該自己利用這個技巧 – casraf 2010-02-28 11:18:41

1

雖然Zend往往有點臃腫,Zend框架內置了認證。可以只使用Zend的一小塊,但我從來沒有嘗試過使用認證位。

也有一對情侶在PEAR認證庫 - PEAR ::驗證這是一個穩定的版本和PEAR :: LiveUser這是測試版,並於2008

我最後發佈(貝塔)希望能給你一個好的開始。