网址重写 - 这会导致安全问题吗?

Posted

技术标签:

【中文标题】网址重写 - 这会导致安全问题吗?【英文标题】:Url Rewriting - Does that cause a security issue? 【发布时间】:2011-08-22 03:11:09 【问题描述】:

您好,我最近阅读了 JSP 并遇到了它的技术,主要是 session。在会话下,我阅读了 URL 重写 为保持与客户端的会话而完成的一种方法。但是由于 URL 重写会更改带有会话 ID 的 URL,并且它可以对客户端可见。 这不是安全问题吗?比方说,如果除了特定用户之外,任何人都记下了这个会话 ID,并且可以不好地使用它?或者有什么技术可以防止这些?

如有错误请指正。

【问题讨论】:

【参考方案1】:

这是我在检查 OWASP 规范以进行 URL 重写时遇到的问题,它在 URL 中公开会话信息是一个日益严重的安全风险(从 2007 年的第 7 位到 2013 年 OWASP 前 10 名列表中的第 2 位)。

管理 URL 重写的选项包括:

在服务器级别禁用它们。 在应用程序级别禁用它们。 一个有吸引力的选择是 Servlet 过滤器。 过滤器使用替代版本包装响应对象,该版本将 response.encodeURL(String) 和相关方法更改为无操作。 (WEB4J 工具包括这样的过滤器。)

【讨论】:

【参考方案2】:

这当然是一个安全问题。如果您很快注意到 jsessionid 值,无论是其他人错误地在公共复制粘贴的 URL 中,还是在公开发布的某些 HTTP 调试工具 (Firebug) 的屏幕截图中显示了请求/响应标头和相关网站通过登录来维护用户,那么您只需将jsessionid cookie 附加到 URL 或请求标头即可在同一用户下登录。很快,因为这些会话默认在 30 分钟不活动后过期。这称为session fixation 攻击。

您可以完全禁用 URL 重写,这样jsessionid 就不会出现在 URL 中。但是您仍然对会话固定攻击很敏感,一些黑客可能已经在公共网络中安装了 HTTP 流量嗅探器或通过某些木马/病毒,甚至使用 XSS 来了解这些 cookie。需要明确的是,此安全问题并非特定于 JSP、php、ASP 或任何通过基于 cookie 的会话维护登录的网站,对此也同样敏感。

为了真正安全地登录,让登录和登录流量通过 HTTPS 而不是 HTTP,并使 cookie 仅 HTTPS(安全)。

【讨论】:

说得好,但为什么这不是 JSP 特有的呢? JSP HttpSessionjsessionid cookie 支持。 PHP $_SESSIONPHPSESSID cookie 支持。 ASP SessionASPSESSIONID cookie 支持。如果您将登录用户存储在会话中,那么哪种语言更敏感并不重要。 JSP jsessionid 更多地出现在新闻中,因为一些 Java 服务器/框架默认打开了 URL 重写。 哦好的,我误会你说的了,谢谢回复 所谓的会话固定实际上称为会话劫持。劫持意味着攻击者使用受害者的会话 ID。会话固定意味着攻击者让受害者使用攻击者准备好的会话,例如通过让他们请求包含攻击者会话 ID 的链接。 能否请大家多了解一下“您可以完全禁用 URL 重写,以便 jsessionid 永远不会出现在 URL 中”【参考方案3】:

大多数(如果不是全部)安全圈不鼓励对会话 cookie 进行 URL 重写。 OWASP ASVS 明确不鼓励使用它,因为它会导致会话标识符通过不安全的媒介暴露出来。

启用会话 cookie 的 URL 重写后,URL 可能会(与会话标识符一起)传输到其他站点,从而导致通过 HTTP 引荐标头泄露会话标识符。事实上,浏览器对位于另一个域的资源的简单请求将导致可能的劫持(通过中间人攻击)或会话固定;这与站点中的跨站点脚本漏洞一样好。

另一方面,当网站执行 cookie 的 URL 重写时,不能再使用其他保护机制,如引入到各种浏览器中的 HttpOnly 和 Secure-Cookie 标志,以不同方式保护会话 cookie。

【讨论】:

【参考方案4】:

我相信您指的是 无 cookie 会话。尽管我在 Java 圈子中看到它被称为“url 重写”。

还有一些额外的会话劫持问题(它们适用于所有支持无 cookie 会话的 Web 开发框架,而不仅仅是 JSP)。但是即使使用 cookie,会话劫持也是可能的。

这是 MSDN 上一篇关于无 cookie 会话和风险/收益的非常好的深入文章。同样,这些都与平台无关。

http://msdn.microsoft.com/en-us/library/aa479314.aspx(朝向底部)

【讨论】:

以上是关于网址重写 - 这会导致安全问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android:通过静态变量传递值会导致安全问题吗?

解决百度网址安全中心提醒您:该站点可能受到黑客攻击,部分页面已被非法篡改

输入可信的网站地址访问的网站一定是安全的这种方法正确吗?

Java套接字多线程安全吗?

打开网址提示您的连接不是私密连接该怎么解决

Subsonic 3.0 对生产使用安全吗?