1

VaadinEclipse RAP/RWT是 Web 应用程序框架,据我所知,它们具有相似的架构。我的问题是使用 Vaadin 或 RAP 构建的应用程序是否容易受到拒绝服务攻击?我目前正在评估这些框架,并希望确定这不是问题。

这是我的推理:

使用 Vaadin 或 RAP,您无需构建 HTML 输出,而是构建类似于 Swing/SWT 应用程序的 Widget 树(在 RAP 的情况下,它是 SWT)。框架在浏览器中将小部件树呈现为 HTML,并将用户交互发送回服务器,应用程序在服务器中收到事件通知。事件被传递到之前已在小部件上注册的侦听器对象。

因此,小部件树必须保存在某种用户会话中,当然会消耗一些内存。

如果应用程序是公开的(即不位于登录页面后面),那么似乎这种应用程序可能存在拒绝服务攻击:只需向应用程序登录页面发出请求,并可能伪造第一个响应。对于任何这样的请求,框架将构建一个新的小部件树,它将在服务器上存在一段时间,直到会话到期。因此,服务器内存应该很快就会被纠结的用户会话填满。

或者这些框架是否发明了针对这种情况的保护?谢谢。

4

1 回答 1

2

只有一个框架不能保护您免受 DoS 攻击。

Vaadin 内置了一些功能来防止攻击,但当然这些功能取决于您如何编写应用程序。

有一个关于 vaadin 安全性的长时间网络研讨会: https ://vaadin.com/de/blog/-/blogs/vaadin-application-security-webinar

Vaadin 对客户端<->服务器流量进行一些验证,以防止 XSS 和其他攻击。

但是当你做一些特殊的事情时,你可以为这种攻击打开大门。

至于你描述的场景:

  • 初始 vaadin 会话在服务器上占用一些内存(就像任何服务器上的所有其他会话一样)

  • 这个内存占用有多大,取决于小部件的初始数量以及为此加载到内存中的内容。(数据库连接等)

  • 当您有一个非常轻量级的登录页面时,通常这不是问题

  • 但是,如果您显示大型表格和许多其他花哨的东西,那么您将必须有足够的内存来容纳请求的数量。(同样适用于所有其他 http 服务器/应用程序,它们也需要内存)

  • 如果请求数量超过服务器的容量,任何 Web 服务都可能在 DoS 攻击中瘫痪

编辑:

由于安德烈斯回答的要点,我想加强我的问题。

首先,我当然同意,如果您将应用程序放在登录墙后面,那么 DOS 威胁就不会那么大。至少您可以识别攻击用户。而且登录页面本身可以是轻量级的,甚至不能用 Vaadin/RAP 实现。由于 Vaadin/RAP 应用程序最有可能在 RIA 风格的 Intranet 设置中使用,因此 DOS 场景不会使它们在这些设置中的使用无效。

但至少这两个框架本身都在互联网上公开了无需登录的演示页面:参见http://www.eclipse.org/rap/demos/http://demo.vaadin.com/dashboard/ 这些不是简单的页面,并且可能会使用相当多的内存。

我担心的是这样一个场景,一个非访问限制的互联网页面:一旦这些框架响应了一个请求,它们必须为该请求保留服务器端内存相当长的一段时间(比如 HTTP 会话的经典 30 分钟,至少在分钟刻度)。或者换一种说法,如果应用程序在相当长的时间内为每个初始用户请求保留内存,那么它很容易受到 DOS 攻击。

将此与不需要用户标识的旧式往返 Web 应用程序进行对比。决定返回什么所需的所有信息都包含在请求中(路径、参数、http 方法……),因此无状态服务器是可能的。如果用户与这样的应用程序交互,应用程序仍然可以在客户端上自由地存储会话持久数据(cookie 中的购物车内容等)。

于 2014-01-20T17:07:37.867 回答