http - 具有类似 REST 的业务逻辑的三层架构对于安全 Web 应用程序是否可行或可行?

标签 http rest ssl https three-tier

因此,您不仅可以回答这个问题,还可以提出建议或改进。我以前从未组装过大型网络应用程序。这是我的思考过程:

  • 持久层:标准数据库(目前为 MySQL)
  • 业务逻辑层:类 REST 结构(PHP、Java Servlet 等...)
  • 表示层:Web 浏览器、Android 设备(应用而非浏览器)及其他

我选择这种架构的原因是,设备可以设计自己的自定义 UI,并通过使用 GET、POST 和不与服务器交互的方式来利用类似 REST 的功能。

问题 1:

问题是,您如何保护用户的信息?您可以通过 SSL 连接对用户进行身份验证并返回一个特殊的 HASH,以便用户可以操纵他们的帐户,但如果有人在网络上监听,他们所要做的就是监听 REST 调用并窃取 HASH。一种解决方案是所有类似 REST 的调用都必须通过 SSL,但这会导致另一个问题。

问题 2:

如果 REST 程序在 SSL 中,则浏览器必须对所有内容使用 SSL,据我所知,这在不必要时可能会很慢而且很麻烦。此外,SOP 使得无法从不安全的浏览器使用 SSL ajax 调用 REST 过程。 HTTP 和 HTTPS 被认为是不同的来源,即使它们具有相同的来源,不同的协议(protocol)。

这个解决方案可行吗?我将如何解决这两个问题?或者可能(可能)我应该为我的 Web 应用程序研究更好的架构。预先感谢所有建议。

最佳答案

如果您想保护信息,您必须使用 SSL,因为任何人都可以监听网络并查看用户信息。如果您想保护访问,请使用 HTTP 身份验证 RFC2617 .通过 SSL,Basic 已经足够安全,但如果您不想对每个请求都使用 SSL,则 Digest 是可行的方法:

  • 您的应用程序可以是无状态的:即更安静、更容易负载平衡……
  • 如果监听(没有 session 劫持),身份验证 token 几乎不能被重用
  • 几乎每个 HTTP 客户端(浏览器或库)都可以使用基本或摘要式 HTTP 身份验证。

关于http - 具有类似 REST 的业务逻辑的三层架构对于安全 Web 应用程序是否可行或可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453779/

相关文章:

rest - 防止重播 REST url 的重播攻击

google-chrome - Chrome Windows 10 : Self signed certificate not working

java - 将 http 更改为 https

ssl - 更改证书的 'Key Usage'

http - 导入后 BaseRequestOptions angular2 错误

php - PayPal REST API 更新计费协议(protocol)

android - Braintree交易状态android,如何检查是否被拒绝?

java - 日志分析应用程序的最佳策略是什么

security - 基于浏览器的 xmlhttp/js/perl/php 游戏作弊预防

javascript - GET 请求抛出错误 : str. replace is not a function