这有多糟?在javascript中存储密码
我有一个设计用于内部网络的web应用程序 当用户登录时(使用标准POST、asp.net、HTTPS),我需要存储用户名和密码,然后在一个特定页面的javascript中使用它。(以便访问和访问ActiveX控件) 这样做的一个明显问题是,当您在该页面上转到“查看源代码”时,您可以看到用户名和密码。我认为没有办法避免这种情况 我的问题是:一旦用户注销…IE7或IE8是否存储整个页面信息?如果是,我会如何看待?(验证用户名和密码是否易于查找) 如果整个页面内容没有被缓存/存储在历史记录中……那么在javascript中使用用户名/pw并没有那么大的安全隐患,因为用户必须登录才能获取数据。我说得对吗 提前感谢您的想法/意见 安德鲁 精化: 我必须创建一个ActiveX对象,…然后用javascript连接到它…我在会话中存储密码…但是我需要用javascript连接到控件:即这有多糟?在javascript中存储密码,javascript,asp.net,security,Javascript,Asp.net,Security,我有一个设计用于内部网络的web应用程序 当用户登录时(使用标准POST、asp.net、HTTPS),我需要存储用户名和密码,然后在一个特定页面的javascript中使用它。(以便访问和访问ActiveX控件) 这样做的一个明显问题是,当您在该页面上转到“查看源代码”时,您可以看到用户名和密码。我认为没有办法避免这种情况 我的问题是:一旦用户注销…IE7或IE8是否存储整个页面信息?如果是,我会如何看待?(验证用户名和密码是否易于查找) 如果整个页面内容没有被缓存/存储在历史记录中……那么在
myactivexcontrol.credentials.username = "username";
myactivexcontrol.credentials.password = "password";
myactivexcontrol.connect();
用户名和密码与web应用程序的登录一致…您可以通过标题将页面呈现为“不可访问”,并验证这在目标浏览器上是否有效。见:
您可以通过故意清除缓存、验证缓存目录是否为空,然后运行您的用例以查看留下了哪些痕迹来测试这一点。如果我是您,我会避免将密码存储在javascript中,如果每个人都知道,那么您就没有密码功能 我该怎么办
我将创建一个页面,它将返回我需要的数据,我将从ActiveX控件调用该页面。问题已解决。这是一种非常糟糕的做法,风险有限,因为您“在内部”使用它。 但是,如果您的内部网络位于windows域上,则可以使用windows身份验证来验证您的用户凭据 另一种选择是使用加密cookies
这两个选项中的任何一个都比您现在所做的更可取。首先,密码应该加密,如果不加密,则进行哈希和盐析(可能多次) 您不能使用会话来跟踪正在登录的用户,而不是存储密码吗?
如果出于某种原因您必须存储密码,请在会话或数据库中存储。我想这太糟糕了。。。为什么不使用会话呢?这种做法会使XSS或CSRF攻击的后果非常非常严重。当用户注销你的网站后,忘掉浏览器中的内容吧——可怕的是当他们还在使用它时,浏览器中的内容!Pointy:我不使用GET变量进行任何形式的身份验证……我不认为跨站点脚本编写有多大风险。此外,这是一个内部web应用程序…鉴于
用户名和密码与登录到系统的密码一致…
我将缩小使用windows身份验证的选项范围。对不起,“系统”指的是web应用程序。即使我指的是系统,…我如何避免在javascript中用纯文本设置凭据参数?@Andrew,我现在还没有时间为您找到一个示例,但我相信ActiveX对象可能知道本地用户的凭据(包括角色)这样,浏览器根本不必传递凭据。我相信这是最好的。我会在几个小时后回顾,看看您是否需要我为您查找或创建该示例。@Andrew…出于好奇,是什么功能迫使您使用ActiveX控件?是否可以将其迁移到标准ASP.NET Web用户控件?Silverlight也许。。。jquery/Ajax???我不太喜欢“修复未损坏的东西”,但我必须承认,我不确定是否有理由保留ActiveX。。。