Http 对于安全的web应用程序,具有REST式业务逻辑的三层体系结构是否可行?
所以,不要拘泥于回答这个问题,也不要拘泥于提出建议或改进。我以前从未组装过大型web应用程序。以下是我的思考过程:Http 对于安全的web应用程序,具有REST式业务逻辑的三层体系结构是否可行?,http,rest,ssl,https,three-tier,Http,Rest,Ssl,Https,Three Tier,所以,不要拘泥于回答这个问题,也不要拘泥于提出建议或改进。我以前从未组装过大型web应用程序。以下是我的思考过程: 持久层:标准数据库(MySQL现在) 业务逻辑层:类似REST的结构(PHP、Java servlet等) 表示层:Web浏览器、Android设备(应用程序而非浏览器)和其他 我选择这种架构的原因是,设备可以设计自己的自定义UI,并通过使用GET、POST和不与服务器交互的内容来利用类似REST的功能 问题1: 问题是,如何保护用户的信息?您可以通过SSL连接对用户进行身份验
- 持久层:标准数据库(MySQL现在)
- 业务逻辑层:类似REST的结构(PHP、Java servlet等)
- 表示层:Web浏览器、Android设备(应用程序而非浏览器)和其他
- 您的应用程序可以是无状态的:即更为restful、更易于负载平衡李>
- 如果侦听(无会话劫持),身份验证令牌很难重用
- 几乎每个HTTP客户机(浏览器或库)都可以使用基本或摘要HTTP身份验证李>
所以答案是肯定的,解决方案是可行的。为了防止账户劫持,需要采取额外的安全预防措施。用于登录的SSL将保护密码。唯一的散列将允许用户继续进行身份验证,而无需向帐户提供密码。存储有关用户的大量信息,如IP、浏览器代理等。。。将不允许轻易劫持帐户。是什么让你说SSL对所有东西都很昂贵?唯一(计算上)昂贵的部分是会话密钥的创建;如果客户机在请求之间保持连接的开放性(与HTTP/1.1相同),那么它的成本几乎与普通HTTP一样高。(不过部署起来更麻烦/成本更高。)据我的理解,握手代价很高(创建会话密钥)。这是我第一次听说连接保持开放。我必须研究一下,握手确实很昂贵,因为它需要交换大量的信息(在计算上也相当昂贵,但在现代计算机上这是不存在的)。但是HTTP/1.1有一个保持连接活动的规定(“管道”IIRC)。无论如何,这对速度至关重要——在引入HTTP之前,HTTP是一个缓慢的协议猪——只要连接到具有相同凭据的同一服务器,就没有问题。(这确实使编写HTTP协议实现变得很困难,但大多数人并不这么做。)