我编写了一个C ++应用程序框架,它使用RESTful API与服务器应用程序进行通信。客户端和服务器之间传递的数据当前使用的是(32位长)简单密码,在服务器和客户端都已知(硬编码)。
在我目前的方案中,客户端和服务器之间的数据传输是作为二进制编码数据完成的。数据是使用密码加密的压缩JSON格式字符串(如上所述)。
我知道这可能是最弱的安全形式。我想通过使用HTPPS以及其他一些机制来加强安全性,以便每个客户端都有一个不能伪造的唯一令牌 - 即使是任何可能碰巧正在窃听消息的人也是如此。这非常重要,因为敏感的个人和财务数据将在服务器和客户端之间传输,因此任何安全漏洞都可能被认为是致命的。
任何人都可以概述一个策略/方法(或最佳实践)来实现这样的安全性 - 包括,如果我必须做任何其他事情来使用HTTPS而不是HTTP - 偶然(可能看起来是一个愚蠢的问题),但是还有什么额外的在我上面描述的方案中,HTTPS通过HTTP提供安全性吗?
我特别感兴趣:
答案 0 :(得分:2)
我们广泛部署了一个应用程序(美国和欧洲),它依赖于几个简单的原则
所有通信均通过HTTPS进行,以防止中间人攻击
所有用户(或您的案例中的应用)都有一个用户名和密码 用于验证身份 - 验证是通过HTTPS
经过验证的用户会获得一个有时间限制的会话密钥,该密钥会在到期时强制重新验证
系统管理员可以随时撤消任何会话
跟踪所有无效登录并将警报发送给系统管理员,以便我们可以看到正在进行的攻击。</ p>
我们的应用程序有一个REST风格的API,远程用户界面和第三方(SAP / Excel ...)一样使用。 REST方面非常正交,但我们使用Ruby RESTful身份验证模块。关键的学习是会话是可以通过对/ sessions资源集的操作创建和销毁的资源。会话将客户端(用户或应用程序)映射到经过身份验证的会话。
可以找到关于RESTful身份验证背景的好文章here。我特别喜欢这个摘录...
身份验证是开发软件时最难的问题之一。因为如果你有一点错误,你的解决方案就不再安全了。你的声誉可能随之降低。那么为什么Web开发人员坚持开发自己的安全性呢?为什么不使用HTTP认证,这可能比大多数程序员自己开发更安全?
Stackoverflow中已有一些很好的资源。看一下here例如
您可能非常了解HTTPS需要什么
证书 - 我们使用GoDaddy - 可怕的网站,但非常便宜和可靠。我们使用全球证书来涵盖整个域
可以处理HTTPS的网络服务器 - 所有这些天,我们使用NGINX因为它快速,可靠且易于配置
可以处理HTTPS连接的适当客户端库
答案 1 :(得分:0)
你们都有一个详细但一般的答案,让我详细说明你的具体情况: