2011-04-27 85 views
0

我有一个用2路加密方式存储在数据库中的用户名和密码。我想用JS形式像这样使用这些登录到一个网站:提交一个没有明文密码的Javascript表格

 var form = document.createElement("form"); 
     form.setAttribute("method", "post"); 
     form.setAttribute("action", "http://www.someloginscript.com/"); 
     var f = document.createElement("input"); 
     f.setAttribute("type", "text"); 
     f.setAttribute("name", "username"); 
     f.setAttribute("value", myUser); 
     var f1 = document.createElement("input"); 
     f1.setAttribute("type", "text"); 
     f1.setAttribute("name", "password"); 
     f1.setAttribute("value", myPass); 
     form.appendChild(field); 
     form.appendChild(f1); 
     document.body.appendChild(form); 
     form.submit(); 

我想和密码提交表单,但是要做到这一点,我需要先解密。如果我解密它,那么通过“检查元素”功能可以看到密码。我显然不想要这个。

我偶然发现了一个名为www.clipperz.com的网站,它确实是我想要的,但我不知道如何。我需要从http://sourceforge.net/projects/clipperz/实现他们的开源加密库吗?或者这是否让烟雾看起来更安全?

谢谢!

编辑:我现在知道这样做没有安全的方法。使用卷曲提交此表单更安全吗?这样我可以保留密码服务器端的所有处理?

+0

听起来很愚蠢,但不是'f1.setAttribute(“type”,“text”);'你有没有试过'f1.setAttribute(“type”,“password”);' – anu 2011-04-27 11:15:16

+0

问题是这个字符串是可读的早在这一点之前。在某个阶段,它需要被检索,解密并存储在变量中。这是纯文本解密后在任何阶段 – user727085 2011-04-27 11:23:00

回答

1

无论您最终发送给第三方网站的信息是什么,都必须在某个时间提供给用户的浏览器,并且在那一点上他们将能够检查并获取信息。

或者,他们可以查看他们机器上发出的HTTP请求。

问题是,如果用户的机器上的信息在任何时候都需要处于解密状态,则用户机器上的信息不能被隐藏。

+0

感谢您的答复。这非常合理。那么,这是否意味着有一种方法可以提交这个表单服务器端?也许这是http://www.clipperz.com是如何做到的? – user727085 2011-04-27 11:24:49

+0

Clipperz似乎并没有隐藏用户的密码,它只是给你一种方法,不必输入他们自己的 – Gareth 2011-04-27 11:38:45

2

您还没有完全指定它,但它听起来像是在尝试在一个站点上使用Javascript来将登录过程自动化到另一个站点中?那是对的吗?这听起来像是你想为所有用户使用一个通用登录,你需要阻止用户看到。

我不认为这将是可行的方式,你试图做到这一点。问题在于,浏览器上的用户可以通过Firebug等工具完全访问Javascript代码及其使用的所有数据。使用这些工具,他甚至可以在页面加载后修改代码。

总之,没有办法让Javascript处理数据而不让用户看到它。

我会建议一个更好的办法如下可能是这样:

  • 网站1将消息发送到站点2,通知它希望登录的用户。它告诉用户IP地址,它想要使用的登录细节和其他相关细节。

  • 站点2以站点1随后发送到用户浏览器的令牌代码响应站点1。

  • 用户浏览器上的Javascript代码然后将令牌发布到站点2而不是登录名和密码。

  • 站点2将其识别为它刚刚提供给站点1的令牌,并且它来自所告知的IP地址,并将用户登录为好像它已收到一组正常的登录详细信息。

此过程显然需要您在站点1和站点2上编写代码,因此您必须具有完全访问它们的权限。如果网站2是第三方系统,那么您可能不得不想出其他的东西。

+0

为全面回应而欢呼。 Site2是第三方网站,所以我需要拿出别的东西。也许卷曲将是提交表单更安全的方式? – user727085 2011-04-27 11:38:21

+1

Curl确实会更安全。但它的缺点是登录将绑定到您的服务器而不是用户的PC;如果您需要执行用户PC的后续请求,这可能会导致无法正常工作。 (您可以将它们全部路由到您的服务器,但如果您有多个并发用户,则会出错)。最好的方法可能只是联系站点2的所有者并与他们讨论您的需求;他们可能已经有了一个API,或者愿意与您合作解决类似于我所描述的解决方案。 – Spudley 2011-04-27 11:44:59

相关问题