如何確保攻擊者或垃圾郵件發送者不會試圖從http://localhost計算機發送數據?我正在開發Flex/Flash應用程序,然後將數據提交給PHP。我知道他們有能力反編譯actionscript,HTTP_REFERER會有幫助嗎?php檢查表單提交url
回答
你可以使用referrer,但即使這樣也可能被欺騙。如果是我,我會sha1()
一些隨機字符串或閃存中的東西,並通過與您的窗體,然後你可以在PHP端sha1()
並檢查它們。
也許你甚至可以讓動態的東西,像
sha1(date('Y-m-d')."MySaltPhrase");
parse_url()
與字符串操作相結合應該工作。試試這個:
$url = parse_url($_SERVER['HTTP_REFERER']);
$host = implode('.',array_slice(explode('.',$url['host']),-2));
if (strtolower($host) == 'google.com') {
// code......
}
並非所有瀏覽器提供HTTP_REFERER,它可以很容易地被欺騙,所以它不會保護您的形式。
您可以做的最好的事情,也是您唯一可以做的事情是確保您的PHP代碼不信任任何輸入。您應該檢查提交給您的表單的任何值是否在可接受的值範圍內,如果適用,請仔細檢查登錄信息等。
如果您擔心機器人,請使用recaptcha或限制任何IP的提交數量地址爲3分鐘(例如 - 爲您的情況選擇適當的速度)。
簡而言之:您永遠無法確定表單提交的起源地點。您必須準備好處理來自攻擊者的提交內容。
我完成了所有。但SSL有幫助嗎? – proyb3 2010-08-05 13:32:21
如果你這樣做了,你擔心什麼?你認爲你可能容易受到什麼樣的攻擊? – 2010-08-05 13:33:51
使用驗證碼進行驗證。在提交表單時,您無法確定源或引用來源是本地主機還是公共IP地址。您將看到的本地主機是您自己的。
答案很簡單 - 你不行。
因爲每個表單實際上是從用戶的本地計算機發送的。這是HTML的東西,你最好明白這一點。將爲您節省大量的時間。
一般來說,你根本不需要任何保護。 但是對於一些特殊情況下的保護策略會有所不同
- ,以防止垃圾郵件使用CAPTCHA
- 防止CSRF利用獨特的標記,同時存儲在會話和窗體的隱藏字段
- 添加自己的特定任務這裏得到一個特定的保護方法。從你想捍衛什麼攻擊?
- 1. 檢查表單是否提交與PHP
- 2. JSP - 檢查表單提交
- 3. PHP - 提交表單
- 4. PHP表單提交
- 5. 檢查表單是否已提交
- 6. 使用條件檢查表單提交?
- 7. 在提交表單前檢查值
- 8. Plone:檢查表單是否已提交
- 9. POST不檢查按鈕表單提交
- 10. 類似值檢查表單提交
- 11. onunload - 檢查表單是否已提交
- 12. 表單提交後檢查複選框
- 13. 提交表單後jQuery檢查問題
- 14. 在提交之前檢查jQuery驗證的表單提交
- 15. 提交按鈕不提交表單,但檢查驗證
- 16. PHP檢查表單是否已經使用num行提交
- 17. php檢查表單是否提交空字段
- 18. 如何檢查PHP中的表單提交?
- 19. 如何使用PHP檢查多個表單提交?
- 20. php表單提交檢查未被識別
- 21. 檢測HTML表單提交
- 22. 提交前檢查表格
- 23. PHP從提交URL
- 24. PHP/HTML表單提交
- 25. php表單提交utf8?
- 26. PHP jQuery表單提交
- 27. 表單不提交HTML php
- 28. 提交一個php表單?
- 29. 防止表單提交PHP
- 30. PHP表單提交刷新
如果有人反編譯閃光燈,那麼它可以仍然是惡搞? – proyb3 2010-08-05 13:24:52
是的,它可以被發現。通過查看網絡流量也可以找到有效的值。在這個例子中,垃圾郵件發送者需要手動提交表單以找到魔術鍵,然後可以在腳本的剩餘時間使用該鍵。 – 2010-08-05 13:27:53
是的,如果你寫了一個自定義算法或其他東西,那麼你可以用更加動態的東西代替它。但是,您需要Flash和PHP中的相同內容。那麼你可以在每次提交時更改密鑰:) – 2010-08-05 14:32:43