2012-03-02 16 views
3

我想在GitHub上设置一个项目页面,以便它充当一个活动站点。除了SSL之外,有没有一种方法可以在网页上进行安全输入?

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

如果我通过GitHub项目页面托管,用户将通过表单提供其sid /令牌。带表格的页面需要通过SSL提供,以便sid /令牌不会以明文形式传输。问题是GitHub项目页面不允许使用SSL。因此,如果我可以找到另一种安全的方式来通过除了使用SSL之外的窗体进行输入,那么我可以通过GitHub项目页面托管整个托管服务。

该项目将是开源的,所以我不期望任何种类的编码/哈希方案的工作,因为方法将公开。

sid /令牌正在卷曲调用API中使用,其中通过SSL发送。也许有一种方法可以将表单输入直接指向该SSL URL,而不是通过非SSL GitHub项目页面...

任何想法?

回答

2

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

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

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

无论其

一个人在这方面的中间人攻击者通过修改通信(例如能力ARP欺骗,DHCP或DNS欺骗)总是可以从服务的HTML中剥离所有客户端保护机制。查看SSLStrip,了解重写HTTPS URL以便即时解密HTTP URL的工具。挑战 - 响应可能会被击败,像这样:

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

你看,拦截攻击者可能会打败你试图弥补的任何防御机制。

相关问题