我有一個php網站,可以讓註冊用戶登錄(使用有效的passord),並根據用戶ID設置會話。不過,我很確定這是被劫持的,我發現我的服務器上沒有放置「新」文件。我的網站清理SQL注入和XSS的所有用戶輸入,但這種情況一直在發生。有沒有人有任何想法如何解決這個問題?我認爲我的PHP應用程序正在被會話劫持?
回答
我會在前面說你的'餅乾'很容易猜到。
有些網站,當用戶登錄時,只需創建一個cookie並且驗證代碼只是檢查cookie的存在。
現在,如果我註冊並登錄到您的網站,然後打開您的cookie打開,並注意到您只是存儲我的用戶ID,然後我可以操縱價值其他用戶ID和瞧!
你明白了。
會話cookie劫持不應允許攻擊者在您的服務器上創建新文件。它所能做的只是訪問經過驗證的用戶會話。這取決於你的代碼和/或服務器的配置,它允許上傳任意文件到網站的webroot。
要檢查遠程妥協命中,得到了可疑文件(searches.php,7.php.jpg)等文件的創建時間...,然後通過你的服務器的日誌梳理,看看什麼在那個時候發生的事情。如果您記錄會話ID以及其餘部分,您可以輕易看到會話是否被劫持,因爲在會話的整個生命週期中會使用來自兩個或多個不同IP的會話。特別明顯的是,如果原始用戶從一個ISP登錄,然後突然出現跳到一個完全不同的ISP。
當然,您的會議如何實施?餅乾? PHP的trans_sid(在隱藏的表單字段和查詢字符串中傳遞會話)? trans_sid特別容易遭受劫持,因爲僅僅是分享鏈接到您的網站也會傳輸會話ID的行爲,並且您網站上的任何外部鏈接都將使會話ID顯示在HTTP引用程序中。
是PHP專家們想出瞭解決的辦法是使用唯一的密鑰/令牌與每個提交的表格,have a look at the idea here at net-tutes。
Don't forget have a look at the PHP Security Guide.。它涵蓋了XSS,表單欺騙,SQL注入,會話劫持,會話固定等主題。
請記住,請始終在查詢中使用正確的數據類型,例如,在數字前使用int
或intval
函數,在字符串值中使用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應用:
- 1. PHP會話認爲它被劫持,除非回聲被執行
- 2. PHP會話劫持
- 3. 會話劫持和PHP
- 4. PHP會話劫持檢測
- 5. 我的應用程序試圖劫持我自己的應用程序?
- 6. 避免針對Web應用程序的會話劫持
- 7. 如何防止會話劫持導致asp.net應用程序?
- 8. PHP最佳實踐,以防止會話劫持的認證
- 9. 實施會話劫持預防,正確
- 10. PHP會話劫持及其方法
- 11. WPS Office劫持我的應用程序的Webview
- 12. 防止會話劫持
- 13. 會話劫持或攻擊?
- 14. 停止會話劫持
- 15. 會話劫持安全
- 16. facebook會話在我的應用程序中經常被破壞?
- 17. 我網站上的鏈接被劫持?
- 18. 在ASP.NET中避免會話劫持
- 19. 我需要在我的Android應用程序中使用PHP會話嗎?
- 20. 使用PHP會話與我的Android應用程序登錄
- 21. 會話不會在我的web應用程序中保持活動狀態
- 22. 默認的Facebook應用程序被稱爲eventhough我在我的應用程序中使用Facebook sdk
- 23. 我的應用程序是否被認爲是安寧的?
- 24. ASP.NET中的會話劫持保護
- 25. 防止會話劫持的好方法?
- 26. ZK中的會話劫持預防
- 27. 會話劫持預防......我的腳本能夠幫助我多久?額外的預防程序?
- 28. 如何確保我的PHP應用程序不會被分配?
- 29. 我該如何阻止我的剪貼板被劫持?
- 30. PHP會話在2 Web應用程序
澄清你所說的 「新」 的文件是什麼意思?什麼樣的文件,以及在哪裏? – 2010-04-18 18:30:02
它比代碼劫持更可能是代碼中的漏洞,但除非你能提供更多細節,否則不可能說。 – zombat 2010-04-18 18:33:07
我認爲這是一個Iframe惡意軟件。 – Emily 2010-04-18 18:35:30