2011-06-04 81 views
0

我需要逃避/消毒以下嗎?我需要逃避/消毒以下嗎?如果是這樣,最好的方法是什麼?

  1. 在 PHP腳本(未插入 數據庫或顯示給用戶),用於 例如$_SERVER['HTTP_USER_AGENT']

    if ($_SERVER['HTTP_USER_AGENT']==$xyz) { 
         echo "Congrats, you are using XYZ browser"; 
    } else { 
         echo "You are not using XYZ browser."; 
    } 
    
  2. $_SERVER['HTTP_USER_AGENT']當 放置爲一個會話變量,用於 例如:

    $_SESSION['userAgent']=$_SERVER['HTTP_USER_AGENT'] 
    
  3. 凡是將要被散列, 例如:

    hash('sha512',$randomDataPostedByUser) 
    
  4. 用戶輸入目的地爲電子郵件主體 (換言之,我已經採取 護理電子郵件標題注射)。

如果上述任何一項確實需要檢查/消毒,每種情況的最佳方法是什麼?

+3

您可能在第一個示例中缺少第二個'='。 – 2011-06-04 17:14:20

+0

電子郵件的身體聽起來很腥,所有其他的例子看起來很理智 – knittl 2011-06-04 17:14:26

+0

@Pekka謝謝,我加了第二個'='。 – user928984 2011-06-04 18:07:45

回答

4

沒有,就沒有必要在任何你展示的例子衛生,具有下列非常罕見的例外,郵件正文例如:

(僅Windows)當PHP跟一個SMTP服務器直接地,如果在線的開始處發現完全停止,則將其移除。爲了解決這個問題,用雙點替換這些事件。

但是,您可能需要稍後清理會話變量,具體取決於您將如何處理它。

其他說明:

  • 你的第一個例子似乎沒有什麼意義,因爲用戶代理字符串改變嚴重。您將不得不使用strstr()或正則表達式來匹配用戶代理。

  • 如果您正在進行比較,將用戶代理存儲在會話變量中可能不是一個好主意 - 只需在需要時從$ _SERVER數組中抽取它即可。

+0

+1因爲它是pekka – dynamic 2011-06-04 17:55:09

+0

所以不可能創建類似於以下情況的漏洞利用程序? (我提前道歉,如果這是荒謬的,我仍然在學習。)'哈希( 'SHA512',$ randomDataPostedByUser)''那裏$ randomDataPostedByUser'是'$不重要的)'moreCodeToRunAnExploit' – user928984 2011-06-04 18:30:49

+0

@user沒了,因爲') ''將被解釋爲字符串數據。這種方式沒有辦法「爆發」(除非使用'eval()'運行代碼,其中一個不應該這樣做,除此之外) – 2011-06-04 18:32:13

相關問題