2012-11-22 46 views
1

我想使用javaScrip来调用Web服务,但Web服务调用包含用户名和密码,所以我正在考虑将用户名和密码的值存储在一个隐藏的字段,然后通过附加用户名和密码的值来使用javaScript构建Web服务URL。 Incase我打算对这些Web服务调用启用https,然后将用户名和密码的值作为隐藏字段存储在html页面中,请考虑安全吗?黑客能否查看隐藏字段的值

+3

不!任何想看到它的人都可以看到客户端上的任何内容。代理服务器上的Web服务,然后使用JavaScript向您的代理发出AJAX请求。 –

回答

6

绝对是的,黑客将能够看到隐藏字段的值。任何查看页面源代码的人都可以很容易地看到HTML中的隐藏字段。

为了表明这一点,这里有一些来自谷歌登录页面的代码。

<form id="gaia_loginform" 
     action="https://www.google.com/LoginAction2?service=mail" method="post" 
     onsubmit="return(gaia_onLoginSubmit());"> 
<div id="gaia_loginbox"> 
<table class="form-noindent" cellspacing="3" cellpadding="5" width="100%" border="0"> 
    <tr> 
    <td valign="top" style="text-align:center" nowrap="nowrap" 
     bgcolor="ddf8cc"> 
    <input type="hidden" name="ltmpl" 
      value="default"> 
    <input type="hidden" name="ltmplcache" 
      value="2"> 

声明本特别:

隐藏意味着它不会在网页上显示出来,但仍包含在源。所有人必须做的就是导航到页面,查看源代码,并且他们可以找到任何隐藏的条目。

+0

那么我还可以使用其他方法来设置和发送主登录用户名和密码与Web服务调用使用javaScript ..? –

+0

这实际上取决于你的架构。但是你一般想在服务器端进行验证。 – PearsonArtPhoto

2

是的,任何客户端都可以看到它,并且它不安全。你只需要查看页面的源代码,甚至可以看到隐藏的<input>的值。

2

如果攻击者在网络上侦听,这很安全。正确使用的HTTPS阻止他学习任何有用的东西。如果用户名/密码是标识浏览器用户的对,则这是正确的线程模型。如果用户名/密码对将您(服务器运营商)标识给第三方,则不是正确的模式。

如果您认为用户是敌人,那么这是不安全的。他可以简单地要求他的浏览器给他隐藏字段的值,或者他可以嗅探SSL连接(例如,使用javascript,或者钩住SSL库,或者让他的SSL库将密钥发送到日志文件中)。您不能保存您发送给客户的任何信息。

实际上,这意味着您应该使用用户的会话ID来验证客户端,并使用服务器连接到外部API。

+0

我毫不犹豫地开始回答“这是安全的”这个不好的事情,即使看完整件事情表明它确实不是...... – PearsonArtPhoto