在javascript变量中保存密码-安全性影响
Holding password in javascript variable - security implications?
除了基于浏览器的客户端的常见安全漏洞外,在浏览器中的javascript变量中保存用户密码是否会暴露任何特定的安全漏洞?
把这个片段看作一个简单的例子-jsfiddle here
<label for="password">Password</label>
<input type="password" id="password"/><br/><br/>
<button type="button" id="pwdButton">Store password in window.password</button>
<script>
function getContentsOfPasswordField() {
return jQuery("input#password").val();
}
jQuery("button#pwdButton").on("click", function() {
window.password = getContentsOfPasswordField();
alert("'" + password + "' stored in global var window.password")
});
</script>
在本例中,密码变量是全局的,并在页面的整个生命周期内持续存在,只是为了使其尽可能容易受到攻击,并给出最坏的情况。也许限制变量的范围/寿命可以保护它免受某些类型的攻击?
立即想到的攻击是XSS,但如果客户端首先容易受到XSS的攻击,攻击者无论如何都可以通过密钥日志记录读取密码(见此),因此据我所见,将其保存在变量中不会增加XSS攻击的漏洞。
请注意,问题的重点并不是这样做是否是一种糟糕的做法,这更像是一个关于客户端web应用程序安全的基本问题。
将密码保留在变量中,让人们可以简单地在浏览器工具中访问它!比方说,当按下存储密码按钮时调用的函数,将密码存储在一个名为password的变量中。即使在那之后根本不在页面上使用这个变量,只需稍后在代码中的某个地方进行处理,人们所要做的就是在浏览器中打开开发人员工具,添加一个像alert(password);
和Bam这样的语句,密码就会在它们面前弹出。
承认,任何简单到让别人这么做的代码都可能不值得出现在网络上,甚至不值得被干预,但我想这是一个教训,说明我们真的是多么脆弱。
相关文章:
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- jQuery工具验证器自定义效果-添加&消除影响
- 如何在不影响其他元素的情况下扩展DIV
- $https请求的安全性
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- NodeJ中的注释会影响性能吗
- JavaScript代码中的安全性
- 是否可以使用Chart.js缩短雷达图上的外部标签,而不影响其他标签
- "过渡到“;影响Ember中的页面刷新
- 我如何使解析查询不同,这样它们就不会相互影响
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- Javascript em根据窗口/视口尺寸调整大小,不影响文档样式的text/css
- 在提交时影响其他文档
- javascript getAttribute是否会影响性能或触发布局
- 如何在不影响网站页面速度的情况下在我的网站上使用谷歌字体
- Javascript:当同时按下两个键时,留下其中一个也会影响另一个的听众
- JavaScript-在不影响索引的情况下将元素插入数组
- 在javascript变量中保存密码-安全性影响
- 允许在不影响安全性的情况下执行用户提交的JS