2010-01-14 42 views
0

我得到了答案如果我禁用cookie然后使用URL ReDirect我可以通过JSESSIONID但我的URL已经很长,因为我使用GET方法它有约束。那么我应该如何使用我的会话。我希望我的应用程序非常安全。 这是我在GOOGLE采访中朋友问到的一个问题。我该怎么做会话URL很长我不能附加JSESSIONID = 389729387392.这是什么解决方案?

+1

谷歌提供了什么答案,或者你的朋友说了什么? – JonH 2010-01-14 17:16:56

+0

http://stackoverflow.com/users/240698/girinie那么,最近你发布了**很多相当不同的问题,所有的气味都像面试问题。你确定这不仅仅是**自己的采访吗? – BalusC 2010-01-14 17:58:31

回答

2

除了使用单字母参数名称(如?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()来检索它。

0

如果你想要你的应用程序是安全密集的,为什么你使用GET。使用POST。这也会减少URL的长度。

因此,按照HTTP协议,URL长度没有最大长度限制。大多数情况下,它的浏览器会存在最大长度限制。尝试不同的浏览器

你应该向面试官提出以上几点。他们可能对你整体评估系统的能力更感兴趣,并发现任何根本的缺陷。

0

如果URL太长,则必须将该数据存储在别的地方。大多数网站会将会话ID放入Cookie中。

+0

他的问题明确提到cookie被禁用。 – BalusC 2010-01-14 17:52:27

+0

然后我会让他们回来。只要你有SSL,cookie值就像查询字符串参数一样安全。 – David 2010-01-14 19:22:23

2

据我所知,你在URL中的JSESSIONID的主要问题是总长度。

也许你应该仔细看看为什么网址的长度首先太长。由于你已经有一个会话,所以你不可能将一些GET参数移动到会话中。还有很多不同的方式来为网页制作较短的网址(a la mod_rewrite)。

关于安全性,JSESSIONID与HTTP POST一样可以HTTP POST。编码HTTP POST的base64并不是一项安全措施。获得更多安全性的最佳方法是通过TLS/SSL加密传输通道,实际上启用HTTPS。这将确保窃听(或中间人攻击)无法访问纯文本。

相关问题