除了SSL之外,还有办法允许在网页上进行安全输入吗?

时间:2012-03-02 19:30:00

标签: html forms security input github

我想在GitHub上设置一个项目页面,以便它充当实时网站。

该网站需要API sid&令牌(两者都只是长文本串),在自托管环境中,用户只需添加到配置文件中。

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

您还可以使用某种使用Javascript的Challenge-Response加密/散列方案。该算法将是这样的:

  1. 服务器生成唯一的随机令牌,保存并将其与表单HTML一起发送到客户端。
  2. 在客户端,Javascript拦截表单提交并使用服务器生成的令牌将敏感表单数据散列为盐。
  3. 服务器现在可以检查散列是否等于其自己计算的散列值
  4. <强>无论其

    具有修改流量能力(例如通过ARP poisening,DHCP或DNS欺骗)的中间人攻击者可以始终从提供的HTML中剥离所有客户端保护机制。请查看SSLStrip有关重写HTTPS URL以便动态取消保护HTTP URL的工具。挑战 - 反应可能会被打败:

    1. 保存服务器发送的令牌,从HTML表单中删除Javascript。
    2. 由于现在没有拦截表单提交,我们会获得原始输入数据。
    3. 使用与Javascript相同的算法对数据进行哈希处理。
    4. 谢谢你所有的鱼。
    5. 你知道,一个拦截攻击者可能会击败你试图弥补的任何防御机制。