6.1. WEB 安全

CUBA 开发的应用程序安全吗?

CUBA 框架作为开发框架遵循了良好的安全实践,为 web 应用程序中最通常最易受攻击的部分做了自动防护。平台架构提供了安全编程模型,可以使得开发者专注于业务和程序逻辑。

  1. 用户界面(UI)状态和验证

    Web 客户端是个服务器端的应用,应用中所有的状态、业务和 UI 逻辑都在服务端处理。不像其它客户端驱动的框架,CUBA 的 Web 客户端永远不会把内部逻辑暴露给浏览器,而浏览器是攻击者最容易攻击的地方。数据的验证也是在服务端处理,因此客户端方面的攻击不能绕过这些验证,在 REST API 也有同样的验证机制。

  2. Cross-Site Scripting (XSS) - 跨站脚本攻击

    Web 客户端集成了对于跨站脚本攻击的防护措施。它会在数据在用户浏览器做渲染之前,先把数据转成 HTML 实体。

  3. Cross-Site Request Forgery (CSRF) 跨站请求伪造

    所有在客户端和服务端之间的请求都包含了用户会话特定的 CSRF token。所有服务端跟客户端的通信都由 Vaadin 框架 来处理,所以不需要手动处理去包含 CSRF token。

  4. Web 服务

    所有 Web 客户端的通信都通过一个支持 RPC 请求的 web 服务来做。项目中不会开放包含业务逻辑代码的 web 服务,因此减少了应用中的攻击入口点。

    通用 REST API 接口也为登录用户或者匿名用户自动提供了角色、权限和其它的安全限制。

  5. SQL 注入

    平台使用基于 EclipseLink 的 ORM 层,EclipseLink 已经做了针对 SQL 注入的防护。SQL 查询的参数是通过参数数组的形式传递给 JDBC 的,而不是跟查询语句做字符串拼接。