2008-09-23 21 views
1

我瞭解在談到網站安全框架時的「不要自己推銷」的口頭禪。是否有一個PHP安全框架可以保護電話號碼以及密碼?

無論如何對於大多數情況。

我將在一個集成文本消息到系統的網站上進行合作。

我想使用現有的經過良好測試的安全框架來保護用戶數據,但我也需要它來保護用戶的電話號碼。

我不想成爲一個負責用戶列表中的手機號碼越來越頂和垃圾郵件。

社區可以提供哪些建議?

回答

7

請注意,應用於密碼的技術在此不適用。您可以存儲醃製和散列的密碼(雖然這樣做的價值可能有爭議),但這對電話號碼不起作用。

如果有人插入你的服務器,他們可以做任何事情的服務器可以。這必須包括恢復電話號碼,但不包括恢復密碼,如果它散列好。所以電話號碼只是保護機密數據的特殊情況。

如果手機號碼確實是應用程序中唯一的敏感數據,那麼您可以關閉發送文本的應用程序部分,並對手機號碼進行非對稱加密。在不同的進程中(或在不同的機器上)運行一個有密鑰解密電話號碼的應用程序。這個應用程序的接口可能會有一個函數採用加密否和消息發送。保持這個應用程序簡單,並測試和審覈它的鼻涕。要麼將其從外部世界隱藏起來,要麼使用身份驗證來證明請求確實來自您的主應用,或者兩者兼而有之。

數據庫和應用程序的主要部分都不能解密電話號碼(例如,你不能搜索它們),但他們可以加密它們以添加到數據庫。

通用技術被稱爲「特權分離」,以上只是一個例子。

請注意,電話號碼通常需要在加密之前用隨機數據填充(如醃製密碼)。否則,可能在不知道私鑰的情況下回答「是加密電話號碼X?」的問題。這可能不是垃圾郵件發送者盜取您的分發列表的POV的問題,但是它聲稱您的電話號碼已被安全存儲,這是一個問題,因爲這意味着暴力攻擊變得可行:只有幾十億電話號碼,並且有可能爲給定的用戶大規模縮小。

對不起,這不直接回答你的問題:我不知道是否有一個PHP框架,這將有助於實現特權分離。

[編輯補充:實際上,在我看來,在'保持特權應用程序簡單'的標題下,您可能根本不想使用框架。這取決於您是否認爲自己確實需要在少量代碼中留下錯誤,而不是框架作者將更多(但更廣泛使用)的代碼留下來的錯誤,已經寫了。但是,這是一個巨大的過於簡單。]

1

由於您需要能夠檢索電話號碼,因此您唯一可以做的就是保護它們(超出了保護數據庫的常規做法),並對它們進行加密。這意味着您需要:

  • 確保在您無意中泄漏數據庫轉儲時密鑰不會泄漏。
  • 確保您的系統不會在有人管理SQL注入您的系統時幫助解密電話號碼。

當然,不推薦你自己的建議仍然適用,使用AES或其他一些備受推崇的密碼和合理的密鑰長度。

1

我很高興地宣佈孔安全系統的發佈爲PHP

這個項目代表帶來的PHP是用Java Spring提供了一種安全的爲以前的Acegi安全系統提供安全保護。它旨在吸引Spring Security用戶,因爲它的理念是一樣的。這是向PHP站點添加安全性的一種不顯眼的方式。 Spring Security使用Spring IoC/DI來配置基板IoC/DI。

一個例子配置船舶與框架,可以像這樣使用:

$context = new substrate_Context(
    './path/to/hole-security/hole-security-config.php' 
); 

$context->execute(); 

$hole_Security = $context->get('hole_FilterChainProxy'); 
$hole_Security->doFilter(); 

只要確保該框架的引導代碼是你選擇的MVC的引導之前執行。

網址: http://code.google.com/p/hole-security/

文檔: 就目前而言,你可以使用Spring Security的參考文檔在那裏的應用。您可以使用Acegi Security參考文檔獲得一個總體思路,因爲漏洞安全性使用相同的配置方式,但請記住它基於Spring Security。

許可證: 它在Apache許可證版本2.0下發布。

特點: 漏洞安全帶來一個可插拔的安全系統,您可以採用您的環境的安全要求。目前有一個非常簡單的安全系統,因爲它是在第一個版本上發佈的,但是它帶有基礎的基礎,它可以建議或請求將新功能添加到項目中。

目前特點:

  1. 在內存DAO認證作爲一個概念證明,你可以切換到該得到的,從數據庫中的用戶數據或任何你存儲它你喜歡的DAO或實施。在期貨發佈中,將創建基於PDO的實施。

  2. 配置的過濾器適用於url模式。網址路徑匹配器可以插入到目前它隨附的螞蟻樣式路徑匹配器中。

  3. 可以在您的應用程序中使用授權管理器來決定是否進行任何操作,始終從基板上下文中獲取參考。

  4. 如果應用了hole_HttpSessionContextIntegrationFilter,則可以從應用程序的任何代碼訪問共享安全上下文。您可以使用此上下文保存與會話相關的信息,而不必直接使用會話對象。

  5. 您可以使用自定義登錄頁面,並根據hole_AuthenticationProcessingFilter配置對其進行自定義,或根據您的自定義登錄頁面自定義hole_AuthenticationProcessingFilter。

  6. 默認的密碼編碼器是純文本,沒有編碼。期貨版本將實現MD5,Sha基,Base64和其他相關編碼。您可以創建自己的密碼編碼器並進行配置。

  7. 所有的對象都會根據需要加載,如果某個過濾器沒有被用於請求的話就不會被加載。這增加了應用程序的性能 還有其他與孔安全相關的功能。

相關問題