【问题标题】:Is there a way, aside from SSL, to allow secure input on webpages?除了 SSL 之外,还有其他方法可以允许在网页上进行安全输入吗?
【发布时间】:2012-03-02 19:29:59
【问题描述】:

我想在 GitHub 上设置一个项目页面,使其充当实时站点。

该站点需要一个 API sid 和令牌(都是长文本字符串),在自托管环境中,用户只需将其添加到配置文件中。

如果我通过 GitHub 项目页面进行托管,用户将通过表单提供他们的 sid/token。带有表单的页面需要通过 SSL 提供,以便 sid/token 不会作为明文传输。问题是 GitHub 项目页面不允许 SSL。

因此,如果除了使用 SSL 之外,我还能找到另一种通过表单获取输入的安全方法,那么我可以通过 GitHub 项目页面将整个事情托管为托管服务。

该项目将是开源的,因此我不希望任何类型的编码/散列方案起作用,因为这些方法将是公开的。

sid/token 用于 curl 调用 API, 通过 SSL 发送。也许有一种方法可以将表单输入直接指向该 SSL URL,而不是让它通过非 SSL GitHub 项目页面...

有什么想法吗?

【问题讨论】:

    标签: html forms security input github


    【解决方案1】:

    如果可能的话,您可以只为表单的action 属性提供目标脚本的HTTPS URL。

    您还可以使用某种使用 Javascript 的挑战-响应加密/散列方案。算法是这样的:

    1. 服务器生成唯一的随机令牌,将其保存并与 HTML 表单一起发送给客户端。
    2. 在客户端,Javascript 拦截表单提交并使用服务器生成的令牌作为盐对敏感表单数据进行哈希处理。
    3. 服务器现在可以检查哈希是否等于自己计算的哈希值

    但是

    能够修改流量(例如通过 ARP 泊松、DHCP 或 DNS 欺骗)的中间人攻击者总是可以从提供的 HTML 中剥离所有客户端保护机制。查看SSLStrip,了解一种用于动态重写 HTTPS URL 以使 HTTP URL 不安全的工具。挑战-响应可能会像这样被击败:

    1. 保存服务器发送的令牌,从 HTML 表单中删除 Javascript。
    2. 由于现在没有拦截表单提交,我们得到原始输入数据。
    3. 使用与 Javascript 相同的算法对数据进行哈希处理。
    4. 感谢所有的鱼。

    您会看到,拦截攻击者可能会破坏您尝试构建的任何防御机制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2012-01-29
      • 2019-09-14
      相关资源
      最近更新 更多