【问题标题】:Securely send data over HTTP across domains通过 HTTP 跨域安全地发送数据
【发布时间】:2012-03-15 20:28:48
【问题描述】:

我正在开发一种 SSO 解决方案,其中有一个主身份验证站点和多个从属站点。我正处于当有人在从属设备上注册时,它需要将注册转发给主设备,从而使用户也登录到主设备。

有很多方法可以解决这个问题,目前我正计划加密所需的注册/登录数据并在隐藏的 iframe 中使用这些数据重定向最终用户,这样最终用户就不会被这个过程所困扰(这将在网站的条款和条件中涵盖)。现在它已经在使用 SSL,但我想让这个过程尽可能安全。目前,我正在使用主服务器和从服务器在其配置中保存的密钥加密数据发送。我担心有人可能会破解它,因为密钥总是相同的,并且我正在考虑使用盐以及主必须从奴隶获得的每个单独查询的密钥,但这会加倍所需的 HTTP 查询数量。

我只是想知道我是否在想这件事,或者我是否过于谨慎(毕竟,理论上仅 SSL 就足够了)。

有什么建议吗?谢谢

【问题讨论】:

    标签: php security authentication encryption


    【解决方案1】:

    在大多数情况下,SSL 就足够了。如果服务器的证书和私钥存储安全,证书吊销会定期检查,私钥不弱(等等......),最终用户的浏览器和您的服务器之间的通道(以及服务器之间的通道)主站点和从站点)将受到保护,不会被窃听,防止其他人看到凭据。

    SSL 不做的是验证连接的“客户端”端,也就是说,任何知道正确 URL 的人都可以连接、验证(模拟从站)并获得验证/登录令牌(if 提供的凭据是正确的)。这意味着,给定一个令牌,您的主服务器将无法区分哪个站点正在执行“特权”功能。凭据本身仍受 SSL 保护,攻击者仍需要知道它们才能执行攻击。 (我假设网站本身没有其他错误,例如 XSS 漏洞或不正确的 cookie 管理)。

    也就是说,如果您需要在此网络中管理权限,则应该使用密钥(或字符串形式的秘密)并将其从从站点传递给主站点非常详细的信息(例如根据用户的身份阻止登录某些站点并允许其他站点登录,或者如果某些站点不受您的直接控制并且您怀疑某些站点受到了破坏,则暂时拒绝登录某些站点);如果是这种情况,我建议你看看OAuth site,它是专门为此目的设计的协议(你可以简单地编写一个允许登录并从主服务器检索必要数据的 API)。

    如果(且仅当)所有网站都在您的直接控制之下,仅使用 SSL 就足够了;管理两组密钥(一组用于 SSL,一组用于附加加密)的负担太重,服务器会使用太多资源。仅确保浏览器和服务器之间以及服务器之间的所有通信都使用 SSL,以防止网络嗅探。

    【讨论】:

    • oauth.net/code/ 上还有一个现成的库存储库,无需从头开始编写所有代码。
    • 感谢埃尔加顿的信息。我想我会停止偏执,对 SSL 有一些信心。
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 2010-12-13
    • 2014-11-27
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多