2013-12-11 111 views
0

我知道這是一場永無止境的戰鬥,每個人都有不同的方法和觀點......我需要一種新的方法來清理/消毒PHP中的用戶輸入。我有一些隨機文件出現在我的一個網站目錄中......我不確定是否由於被盜密碼或什麼,但顯然我的方法不再工作了!我很抱歉,這可能是重複的,但我厭倦了我的服務器有漏洞!通過PHP對用戶輸入進行淨化處理

我目前使用的:

function clean($value) { 
if (is_array($value)) { 
    foreach($value as $k => $v) { 
     $value[$k] = clean($v); 
    } } 
else { 
     if(get_magic_quotes_gpc() == 1) { 
      $value = stripslashes($value); 
     } 
     $value = trim(htmlspecialchars($value, ENT_QUOTES, "utf-8")); 
     $value = mres($value); 
} 
    return $value; 
} 

然後我通常包括這在每個文件的頂部:

$POST = clean($_POST); 
$GET = clean($_GET); 

萎靡不振的我,因爲我無法獲得再次被列入黑名單的垃圾郵件之前,請幫忙!

+0

我懷疑這個功能會對你的問題產生什麼影響 –

+0

你想幹什麼?你的問題讓我思考文件 - 如果你這樣做,你可以通過MIME類型檢查。 http://www.php.net/manual/en/ref.fileinfo.php –

+0

對不起,只是用戶輸入..我通常做類似'$ POST = clean($ _ POST);' – C0NFUS3D

回答

2

你剛發佈的這個函數與你的目錄中的「隨機文件出現」沒有任何關係。這些是用於字符串消毒,而且你也沒有消毒整數。如果你使用這個函數來清理你的database inputs,那麼你必須首先驗證你輸入的數據,以便它符合你的需要,所以如果你期望一個整數,所以,你確定它是一個整數,而不是僅僅添加斜線來停止字符串中的引號,如果您希望字符串您確定它是一個字符串。如果您打算顯示用戶輸入的任何數據,則必須防止XSS。如果你的服務器有漏洞,那麼問題不在於你的網站,而是在服務器本身安裝軟件。至於隨機出現的文件,我能想到的唯一方法是,如果允許某些用戶上傳圖片或文件而不確定其擴展名是什麼,並且允許用戶上傳PHP文件或HTML代碼。最後,我只想說明,沒有人可以給你一個符合你需求的消毒功能,你需要爲你的確切需求制定一個消毒功能,因爲沒有人會知道你期望的數據類型。

這是在保護你的網站對任何用戶輸入的一般規則是否是上傳或文件被註冊

  1. 對數據進行驗證,並確保它的數據你期望的類型的用戶。
  2. 對這些數據進行清理,使其不能包含任何可能危害您網站的惡意代碼。
+0

感謝您的信息!我仍然在調查,但仍然不確定發生了什麼......我認爲這可能是我處理用戶輸入的方式,但我也正在檢查服務器日誌中是否有任何可疑的事情...... – C0NFUS3D