我正在構建一個使用GWT的Web應用程序,並使用一個簡單的java類來執行客戶端中的文本框和其他字段的驗證。我不確定用戶可以繞過這些驗證運行該代碼。請告訴我我可以在窗體中進行驗證的最安全的方式。GWT中的客戶端驗證漏洞
回答
通常,您需要在客戶端和服務器上驗證均爲:在客戶端可以立即反饋給用戶(方便,可選),並在服務器上進行安全性(必須!)。
與在客戶端使用jQuery或類似的應用程序以及服務器端的不同語言相比,使用GWT獲得的優勢在於,您可能能夠爲客戶端和服務器重複使用相同的驗證代碼驗證。
瀏覽器中的JavaScript可能被黑客入侵/繞過,因此沒有安全的方法來做到這一點。你不應該依賴於JavaScript來執行任何安全相關的功能。
您必須在服務器上進行安全檢查,以確保您的應用程序安全。
感謝彼得...我會記住這一點。 – 2011-06-14 07:21:55
這裏是我的客戶的觀點VS服務器驗證很短的博客文章:
http://ashtoncthomas.blogspot.com/2011/03/gwt-validation-on-client-server.html
有幾個方面,你可以驗證和一些平衡,例如客戶端和服務器之間共享代碼。
你確認你創建DTO的之前或之後(如果你那麼做後,你可以分享一些代碼,但你不能信任的輸入)
我建立了一個自定義的驗證框架,可以很容易地捆綁驗證在客戶端和服務器上,但每種情況都不一樣,所以我建議找到適用於大多數項目或至少適用於當前項目的東西。
自2006年以來,已經承諾適當的客戶端驗證! http://code.google.com/p/google-web-toolkit/issues/detail?id=343 我對此並不屏氣。
我已經從脆弱的自制客戶端驗證轉移到往返驗證,在此驗證您提交持久請求的實體處於無效狀態。如果你有一個運行服務器端的驗證器,RequestFactory會向你發送Set in Receiver.onViolation()。
這對我來說意味着更少的代碼,代價是接收驗證結果的客戶端的延遲很小。它仍然比純HTML表單快得多。
看看在驗證實體: http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html
- 1. Spring Roo的GWT客戶端驗證
- 2. GWT JSR 303客戶端驗證
- 3. 用於java客戶端驗證的GWT驗證框架
- 4. 客戶端驗證
- 5. 客戶端驗證
- 6. 驗證客戶端
- 7. 驗證客戶端證書
- 8. 如何防止JavaScript中的客戶端DOM XSS漏洞?
- 9. 驗證PyOpenSSL中的客戶端證書
- 10. 驗證的RadioButtonGroup客戶端
- 11. Rails的客戶端驗證
- 12. 客戶端驗證的OpenERP
- 13. Uploadify的客戶端驗證?
- 14. 調用客戶端的表單的DoS風險/漏洞javascript/webpop
- 15. 如何更新git客戶端來克服最新的漏洞?
- 16. 客戶端表單驗證?
- 17. 客戶端身份驗證
- 18. CloudTrax - 驗證客戶端
- 19. Telerik asp.net客戶端驗證
- 20. Silverlight客戶端驗證
- 21. angulars JS客戶端驗證
- 22. Reactjs客戶端驗證
- 23. 刪除客戶端驗證
- 24. 在客戶端驗證
- 25. MVC客戶端驗證
- 26. FluentValidation客戶端驗證
- 27. 客戶端表單驗證。
- 28. Recaptcha客戶端驗證
- 29. ASP.NET CheckBoxList客戶端驗證
- 30. 禁用客戶端驗證
+1還應該注意的是,進行客戶端驗證的主要原因是爲了減少對服務器的不必要的調用。 – helpermethod 2011-06-14 09:11:05
我有一個疑問,當方法被調用到服務器的調用是通過java代碼完成的,並且將java代碼轉換爲GWT中的javascript,那麼應該如何修改javascriptcode並調用服務器進行驗證的語句是在這種情況下,爲了安全起見應該做什麼。 – 2011-06-14 10:13:23
@Adedeep:用戶只能修改客戶端代碼。更好:想象一下,用戶可以絕對*發送他們想要的任何* HTTP請求(例如,嘗試Firefox插件[Poster](https://addons.mozilla)。org/de/firefox/addon/poster /) - 他們甚至不必使用GWT應用程序與服務器進行交互!這就是爲什麼所有安全檢查都必須在服務器端執行的原因。 – 2011-06-14 10:20:05