我想使用 javaScrip 调用 Web 服务,但是 Web 服务调用包含用户名和密码,所以我正在考虑将用户名和密码的值存储在隐藏字段中,然后使用 javaScript 通过附加来构造 Web 服务 URL用户名和密码的值。如果我要为这些 Web 服务调用实现 https,那么将用户名和密码的值存储为 html 页面内的隐藏字段是否安全?
问问题
376 次
3 回答
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">
特别注意这一点:
隐藏意味着它不会显示在网页上,但仍包含在源代码中。所有人所要做的就是导航到该页面,查看源代码,然后他们可以找到任何隐藏的条目。
于 2012-11-22T11:21:18.470 回答
2
是的,任何客户都可以看到它,不,它不安全。您只需要查看页面的源代码,甚至隐藏<input>
的值都是可见的。
于 2012-11-22T11:21:35.700 回答
2
如果攻击者在网络上监听,它是安全的。正确使用 HTTPS 会阻止他学习任何有用的东西。如果用户名/密码是识别浏览器用户的对,那么这是正确的线程模型。如果用户名/密码对将您(服务器运营商)标识给第三方,则该模型不正确。
如果您将用户视为敌人,这是不安全的。他可以简单地让他的浏览器给他隐藏字段的值,或者他可以嗅探 SSL 连接(例如使用 javascript,或者挂钩 SSL 库,或者让他的 SSL 库发出日志文件的密钥)。您不能对您发送给客户的任何信息保密。
实际上,这意味着您应该使用用户的会话 ID 验证客户端,并使用服务器连接到外部 API。
于 2012-11-22T11:25:37.927 回答