2010-04-18 29 views
2

我有一個php網站,可以讓註冊用戶登錄(使用有效的passord),並根據用戶ID設置會話。不過,我很確定這是被劫持的,我發現我的服務器上沒有放置「新」文件。我的網站清理SQL注入和XSS的所有用戶輸入,但這種情況一直在發生。有沒有人有任何想法如何解決這個問題?我認爲我的PHP應用程序正在被會話劫持?

+0

澄清你所說的 「新」 的文件是什麼意思?什麼樣的文件,以及在哪裏? – 2010-04-18 18:30:02

+2

它比代碼劫持更可能是代碼中的漏洞,但除非你能提供更多細節,否則不可能說。 – zombat 2010-04-18 18:33:07

+0

我認爲這是一個Iframe惡意軟件。 – Emily 2010-04-18 18:35:30

回答

0

我會在前面說你的'餅乾'很容易猜到。

有些網站,當用戶登錄時,只需創建一個cookie並且驗證代碼只是檢查cookie的存在。

現在,如果我註冊並登錄到您的網站,然後打開您的cookie打開,並注意到您只是存儲我的用戶ID,然後我可以操縱價值其他用戶ID和瞧!

你明白了。

2

會話cookie劫持不應允許攻擊者在您的服務器上創建新文件。它所能做的只是訪問經過驗證的用戶會話。這取決於你的代碼和/或服務器的配置,它允許上傳任意文件到網站的webroot。

要檢查遠程妥協命中,得到了可疑文件(searches.php,7.php.jpg)等文件的創建時間...,然後通過你的服務器的日誌梳理,看看什麼在那個時候發生的事情。如果您記錄會話ID以及其餘部分,您可以輕易看到會話是否被劫持,因爲在會話的整個生命週期中會使用來自兩個或多個不同IP的會話。特別明顯的是,如果原始用戶從一個ISP登錄,然後突然出現跳到一個完全不同的ISP。

當然,您的會議如何實施?餅乾? PHP的trans_sid(在隱藏的表單字段和查詢字符串中傳遞會話)? trans_sid特別容易遭受劫持,因爲僅僅是分享鏈接到您的網站也會傳輸會話ID的行爲,並且您網站上的任何外部鏈接都將使會話ID顯示在HTTP引用程序中。

1

是PHP專家們想出瞭解決的辦法是使用唯一的密鑰/令牌與每個提交的表格,have a look at the idea here at net-tutes

Don't forget have a look at the PHP Security Guide.。它涵蓋了XSS,表單欺騙,SQL注入,會話劫持,會話固定等主題。

請記住,請始終在查詢中使用正確的數據類型,例如,在數字前使用intintval函數,在字符串值中使用mysql_real_escape_string函數。例如:

$my_num = (int) $_POST['some_number']; 
$my_string = mysql_real_escape_string($_POST['some_string']); 

You may also use the prepend statements for your queries.

熱門項目要安全PHP應用: