我得到了答案如果我禁用cookie然后使用URL ReDirect我可以通过JSESSIONID但我的URL已经很长,因为我使用GET方法它有约束。那么我应该如何使用我的会话。我希望我的应用程序非常安全。 这是我在GOOGLE采访中朋友问到的一个问题。我该怎么做会话URL很长我不能附加JSESSIONID = 389729387392.这是什么解决方案?
回答
除了使用单字母参数名称(如?a=value1&b=value2&c=value3
或使用REST风格类似的URL(即只是PATHINFO,没有查询参数,例如/value1/value2/value3
,这是HttpServletRequest#getPathInfo()
在servlet中访问),而不是?name1=value1&name2=value2&name3=value3
,你也可以考虑对Gzip和Base64编码查询字符串,使它变得更短,JavaScript和Java都可以对它进行压缩和(d)e(n)编码,最终可以在压缩/编码,在数组/收藏/地图的情况下,它会更短。
这就是说,你确定请求URL通常是不友好的long(假设它超过255个字符)吗?为什么你需要通过很多信息在?他们是否应该维持客户国家?如果是这样,您不应该使用此URL,而是已经与jsessionid cooke关联的服务器端的HttpSession
实例。使用HttpSession#setAttribute()
在会话中存储一些信息并使用HttpSession#getAttribute()
来检索它。
如果你想要你的应用程序是安全密集的,为什么你使用GET。使用POST。这也会减少URL的长度。
因此,按照HTTP协议,URL长度没有最大长度限制。大多数情况下,它的浏览器会存在最大长度限制。尝试不同的浏览器
你应该向面试官提出以上几点。他们可能对你整体评估系统的能力更感兴趣,并发现任何根本的缺陷。
据我所知,你在URL中的JSESSIONID的主要问题是总长度。
也许你应该仔细看看为什么网址的长度首先太长。由于你已经有一个会话,所以你不可能将一些GET参数移动到会话中。还有很多不同的方式来为网页制作较短的网址(a la mod_rewrite)。
关于安全性,JSESSIONID与HTTP POST一样可以HTTP POST。编码HTTP POST的base64并不是一项安全措施。获得更多安全性的最佳方法是通过TLS/SSL加密传输通道,实际上启用HTTPS。这将确保窃听(或中间人攻击)无法访问纯文本。
- 1. 这是什么叫,我该怎么做?
- 2. 我该怎么做才能解决这个问题?
- 3. CSS - 我该怎么做才能解决这个问题?
- 4. 我该怎么做才能解决这个错误?
- 5. 什么是限制这个JSON解析,我能做些什么来解决它?
- 6. 我该怎么做?
- 7. 我应该怎么做才能解决NameError在轨道上
- 8. 我能做些什么来解决java.lang.StringIndexOutOfBoundsException?
- 9. 我应该怎么做才能解决这个扫描仪相关的错误?
- 10. 我想添加一天到我的约会我该怎么做
- 11. 我应该怎么做?
- 12. 我该怎么做MongoDB中
- 13. 我该怎么做PyQt4?
- 14. regexp freebie ...我该怎么做?
- 15. 反思?我该怎么做?
- 16. 我该怎么做(游戏)?
- 17. 为什么会出现这个错误,我该如何解决?
- 18. 我该怎么做最好的方法
- 19. 为什么我不能分配一个常量值,我该怎么做呢?
- 20. 我应该使用websockets为这个webapp使用什么解决方案。 ActiveMQ的?
- 21. 我怎么能做到这一点
- 22. 我怎样才能知道这是做什么?
- 23. 如果当前的ASP.NET会话为空,我应该怎么做?
- 24. 在会话中存储数组?我应该怎么做?
- 25. 我怎么会做EntityManager.class
- 26. 更改SKU是不可能的,我该怎么做呢?
- 27. 我的递归解决方案不起作用,但DP解决方案工作,我不知道为什么
- 28. list.setGrouped(true)不工作?我该怎么做?
- 29. 为什么这是左递归的,我该如何解决它?
- 30. 这个异常是什么意思,我该如何解决?
谷歌提供了什么答案,或者你的朋友说了什么? – JonH 2010-01-14 17:16:56
http://stackoverflow.com/users/240698/girinie那么,最近你发布了**很多相当不同的问题,所有的气味都像面试问题。你确定这不仅仅是**自己的采访吗? – BalusC 2010-01-14 17:58:31