我有一個運行Apache Tomcat的服務器端應用程序,並使用Spring開發。我需要阻止一些用戶訪問本地網絡之外的應用程序。 我一直在尋找一段時間,但我找不到解決這個問題的方法。 Spring是否提供了基於他的權限限制用戶內部/外部訪問的功能?如何檢查客戶端是否是Java本地的
回答
是的,你可以使用當XML表達
我不知道春天什麼,但是,假設你有機會到Tomcat的配置文件使用的Web安全異常與hasIpAddress(String)
,您可以設置一個Valve
在Tomcat本身的配置文件或特定的web應用程序中過濾基於IP地址的訪問。
http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html#Remote_Address_Filter http://vicker313.wordpress.com/2010/11/05/restrict-ip-coming-to-tomcat-service/
Servlet規範允許您查看遠程IP地址,ServletRequest#getRemoteAddr()
。限制IP地址訪問的傳統方式是使用servlet過濾器將IP地址範圍列入白名單或黑名單。您可以搜索可以添加到您的Spring應用程序的servlet過濾器實現。你只需要配置它。但是...確保您的選擇爲以下實施帳戶的實施。如果你找不到解釋這一點的人,可以考慮自己寫。
主要的一點要注意的是,您的服務器所看到的「遠程地址」是不能保證在所有來識別客戶機。這是一個網絡問題,而不是Spring/servlet問題。您的服務器看到的遠程地址,甚至可能是您自己的內部網絡上的負載平衡器或其他網絡設備的IP。
閱讀關於HTTP標頭X-Forwarded-For。如果內部網絡中的某個配置中的反向代理或負載均衡器在TCP/IP堆棧中的應用層(例如HTTP)上轉發請求,並且因此更改了服務器看到的源IP,則對於HTTP該設備通常會將原始IP包含或添加到此標頭。其實這個頭可以包含原始IP地址的列表,在該請求通過幾個的NAT或代理的起源組織或途中在互聯網上達到自己的網絡之前通過的情況。
我會推薦保守的白名單允許地址,而不是黑名單上的禁止地址。如果您的網絡體系結構發生了變化,這可能會更加健壯,但是如果在內部網絡上重新分配IP,您仍然需要小心。
你的Servlet過濾器可以使用的ServletRequest#getRemoteAddr()
組合和解析X-Forwarded-For
頭。
還記得在您的設計和白名單或黑名單中包含任何IPv6地址。
我會看看這個想法,謝謝。 – Porto2112 2012-07-31 14:22:12
- 1. PHP:如何檢查客戶端是否是本地的?
- 2. 檢查WebSocket是否是hixie客戶端?
- 3. 如何檢查客戶端Java版本?
- 4. Mondrian是否有本地客戶端?
- 5. 如何檢查Parse用戶是否從客戶端JavaScript登錄?
- 6. 如何檢查客戶端上的ListBox是否爲空
- 7. 如何檢查Pyro4客戶端是否還活着
- 8. 如何檢查WCF客戶端通道(服務)是否終止?
- 9. 如何異步檢查客戶端是否斷開連接?
- 10. 如何檢查客戶端連接是否還活着
- 11. 如何檢查客戶端是否已收到所有數據
- 12. 如何檢查客戶端是否連接到服務器?
- 13. Rails如何檢查session_id cookie是否被客戶端更改
- 14. 如何檢查客戶端是否連接到XMPP服務器
- 15. 如何檢查客戶端是否已斷開連接?
- 16. 如何檢查客戶端是否不再通過Java中的TCP連接?
- 17. 檢查計劃的本地代理是否可以在Notes客戶端運行
- 18. 檢查TcpListener是否有任何連接的客戶端
- 19. 檢查谷歌本地客戶端文件系統中是否存在目錄?
- 20. 檢查郵件地址是否是Gmail客戶端下<Ruby>
- 21. 如何檢查客戶端腳本資源是否在頁面中註冊?
- 22. 在服務器端檢查客戶端驗證是否成功
- 23. Perforce:是否有任何命令來檢查客戶端規範是否存在
- 24. 檢查客戶端的PC是否連接到特定的Wifi
- 25. 什麼是本地客戶端?
- 26. 如何檢查端口是否在客戶端電腦上打開?
- 27. 如何檢查客戶端是否可以通過端口843連接?
- 28. 如何檢查Django用戶是否仍然僅從客戶端登錄?
- 29. 如何檢查用戶是否授權在客戶端使用JQuery?
- 30. 如何檢查賬戶UI小部件是否加載到客戶端上?
看起來像一個很好的解決方案,但由於我使用的是標準的安全符號,這將是表情符號的複雜變化。 我知道,我可以聲明WebSecurityExpressionRoot作爲一個bean,但我不知道我應該在構造函數中使用的參數。 – Porto2112 2012-07-31 14:16:28