在php中,當你處理GET/POST請求時,你必須檢查它們等等。如果參數缺失或不好,該怎麼辦?如果它應該是某種黑客攻擊,那麼你應該怎麼做?只有die();
與「dontHackMe」?我們應該如何處理不良要求?
1
A
回答
3
不,不只是die()
與「dontHackMe」。我看到兩個結果:
- 如果用戶不是惡意的,而且這是一個錯誤或一個誠實的問題,您已經向用戶提供任何幫助。
- 這實際上是一個非常業餘的反應,甚至可能引發實際的攻擊者尋找更多的安全漏洞。
HTTP定義了a list of status codes的響應。只需選擇正確的一個,並使用該代碼進行響應,並附帶某種默認響應頁面。
例如,如果請求格式不正確或以某種方式不正確,那麼400(錯誤請求)響應代碼是要走的路。響應中的實際頁面應該表明這是一個錯誤的請求,甚至可能會提供一個選項供用戶在需要時尋求幫助(例如鏈接到網站上的幫助部分或指向聯繫表單的鏈接) 。
這樣做的原因響應結構是兩方面的:
- 通過提供一個有用的頁面,你創建的輸出人類可讀的形式,人們可以看到和欣賞,讓您的應用程序,更方便用戶-友善。
- 通過在響應中返回正確的狀態碼(所有響應,而不僅僅是拒絕潛在的黑客攻擊嘗試),您可以創建一個機器可讀界面,自動化客戶端可以使用該界面更有效地與應用程序進行交互。 (A 400響應,例如,講述了一個非惡意自動化的客戶端,它不應該甚至懶得作出該請求再次...請求被接收和處理,並且發現其是壞的。)
編輯:澄清...這是爲了真正地迴應不好的請求。如果表格中提交的數據完全不正確(不符合業務規則,在打算用數字的地方使用字母等),那麼Michael Hampton offers a perfectly sound suggestion。本質上,服務器將「玩傻」並重新顯示錶單。
不要給潛在的攻擊者任何更多的信息比他們已經有。 (請記住,錯誤信息比他們已有的信息要多。)應用程序只會說:「嗯......你試圖提交這個表單,但這是錯誤的,在這裏,再試一次。」
1
不要發送HTTP 4xx響應,除非HTTP標頭本身有問題。
如果您收到來自客戶端的無效輸入,請重新顯示包含突出顯示無效字段的表單。
相關問題
- 1. 我們應該如何處理DTO?
- 2. 當SIM不可用時,我們應該如何處理MFMessageComposeViewController
- 3. 我應該如何處理我的pg_log?
- 4. 我們應該如何處理其餘尋呼鏈接
- 5. SubSonic 3.0.0.3 C#我們應該如何處理保留字?
- 6. 我應該處理
- 7. 我應該如何處理BitBucket中需要一些調整的請求?
- 8. 我應該如何處理在python中掛起http POST請求?
- 9. 我應該如何配置Netty來處理高請求量?
- 10. 我應該如何處理緩存?
- 11. 我應該如何處理軟件包?
- 12. 我應該如何處理iphone/ipad
- 13. 我應該如何處理CONNECT事件?
- 14. 我應該如何處理日期?
- 15. 我應該如何處理MultiValueDictKeyError?
- 16. 我應該如何處理Button事件?
- 17. 我應該如何處理sqlite錯誤?
- 18. 我應該如何處理pushsubscriptionchange事件?
- 19. (StaleElementException:Selenium)我該如何處理?
- 20. 我該如何處理「CrossThreadMessagingException」?
- 21. NullReferenceException,我該如何處理?
- 22. 我應該如何處理不符合請求參數的模型屬性?
- 23. 我應該處理FileUpload.PostedFile.InputStream?
- 24. 我應該處理的XmlNodeList
- 25. Facebook圖表不良要求
- 26. 不良要求400:nginx/gunicorn
- 27. Yelp API的不良要求
- 28. Twitter API不良要求?
- 29. 我不能處理響應JSONP請求
- 30. 我應該讓MVC處理我的favicon請求嗎?
發回錯誤的HTTP請求狀態碼。 – nhahtdh 2012-07-11 07:59:40
對無效數據的響應方式取決於應用程序,但通常最好提供一個有用的錯誤消息和描述錯誤的描述。 – 2012-07-11 07:59:40
我可能沒有讓你很好,但JavaScript是一個很好的工具,用於檢查插入的數據是否有效 – 2012-07-11 08:01:42