首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无SSL的安全身份验证

无SSL的安全身份验证
EN

Stack Overflow用户
提问于 2009-08-31 05:39:36
回答 3查看 9K关注 0票数 16

我开始编写一个小型的web应用程序,并开始考虑保护登录(仅用于管理)。

如果可以的话,我会安装一个CACert或自签名的SSL证书,因为现在我是唯一登录的人,但我的主机并不太乐于助人。

在不使用SSL的情况下,有没有什么合理的方法来保护站点?我一直在考虑身份验证的选项:

  1. 在JavaScript中实现加了盐的哈希。加载登录页面时,生成一个salt服务器端。以明文形式将其发送到客户端,并将其存储在会话variable.
  2. Digest身份验证中。我刚刚发现这个想法正在浏览,而且它可能比滚动我自己的作者更合理。
  3. OpenID。它是一个开放的标准,不需要密码(我可以“劫持”我的OpenID提供商的安全套接字层来增加登录过程的安全性),但是我不知道OpenID是如何工作的,也不知道它有多安全。(需要研究。例如,是否可以重放OpenID身份验证?)

所有这些的问题是:

登录是安全的,其他一切都在clear hijacked

  • Only 中,可以使用clear

  • 会话

我能想到的确保登录后应用程序安全的唯一选择是一些令人厌恶的JavaScript和PHP来回发送加密的ASCII二进制文件。我不想这么做。

有没有什么加密(用于页面加载和帖子)可以在我选择的服务器端脚本语言中实现,而不需要我的主机的支持或参与,但这将由浏览器支持?会话可以在没有SSL的情况下(实际上)防止劫持吗?

在这种情况下,你会怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-01 21:15:17

您可以安全地进行身份验证,而无需实施窃听保护。例如,您可以阻止其他人发送请求,即使他们可以读取您的请求的内容。如果你需要防止窃听,我建议你去可以使用SSL的地方。

如果您只需要简单的身份验证而没有真正的安全性,那么您的提供商可能会支持HTTP Basic。当您担心其他问题时,这(以及限制功能的良好设计和备份)是一个合理的临时解决方案。

为了验证你的身份,OpenID不能重播。每个身份验证序列都是经过签名的。但是,OpenID本身只允许您与服务器建立身份。它不允许您签名或以其他方式验证请求。OAuth可以,但它需要对协议的一部分进行传输加密。

您可以使用共享密钥对每个请求进行签名。这将防止攻击者提交或重放请求,但请求本身仍可被窃听者读取。请参阅Amazon AWS身份验证(包括客户端库)或flickr身份验证的文档。基本协议是:

在请求parameters

  • normalize,排序时,发送散列需要时间戳(可能是现时值),将所有请求parameters

  • concatenate与URI、主机、谓词等连接在一起。具有密钥的

  • 散列在标头中使用密钥

  • 发送散列与request

  • server进行比较,并比较

票数 9
EN

Stack Overflow用户

发布于 2009-08-31 05:52:22

如果您将此作为尝试不同身份验证和加密方法的一种有趣方式,这是很好的,但最便宜和最直接的解决方案是获得一个可以安装SSL证书的主机。

票数 3
EN

Stack Overflow用户

发布于 2009-08-31 05:52:14

如果您在会话中注册了远程IP地址,则无法对其进行劫持。尝试使用不同IP地址的会话的人很容易被检测到。PHP Sessions默认使用它(我猜它是不可选的)。简单高效的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1355952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档