2011-06-01 57 views
3

我有一个专门用于内部网络的Web应用程序。这有多糟糕?在javascript中存储密码

当用户登录(使用标准的POST,asp.net,HTTPS)时,我需要存储用户名和密码,并稍后在一个特定页面上使用它。 (为了访问和ActiveX控件)

这个明显的问题是,当你去那个页面上的“查看源代码”,你可以看到用户名和密码。我认为没有办法可以避免这种情况。

我的问题是:一旦用户注销... IE7或IE8存储整个页面信息?如果是这样,我怎么看? (以验证用户名和密码是否容易找到)

如果整个页面内容没有被缓存/存储在历史....然后在JavaScript中使用用户名/密码不是那么大的安全膛作为用户必须已经登录才能获取数据。我对吗?

在此先感谢您的想法/意见!

安德鲁

阐述: 我要创建一个ActiveX对象,...然后连接到它在JavaScript ...我的密码储存在同一个会议......但我需要把它们在以JavaScript来连接到控制:即

myactivexcontrol.credentials.username = "username"; 
myactivexcontrol.credentials.password = "password"; 

myactivexcontrol.connect(); 

的用户名和密码登录到Web应用程序一致...

+1

它toooo坏我猜...为什么不使用会话? – 2011-06-01 18:05:10

+0

这种做法会使XSS或CSRF攻击的后果非常严重。在用户注销网站后忘记浏览器中的内容 - 当浏览器仍在使用它时,有什么可怕的是什么? – Pointy 2011-06-01 18:09:56

+0

请参阅详细说明 – Andrew 2011-06-01 18:19:06

回答

1

你可以跳投使你的页面为“uncachabl e“通过头文件并验证它是否适用于您的目标浏览器。请参阅:Will web browsers cache content over https

您可以通过故意清除缓存,验证缓存目录为空,然后运行您的用例来查看留下的痕迹来测试此操作。

0

如果我是你,我会避免在JavaScript中存储密码,那么你没有密码功能,如果大家都知道。

我会怎么做

我想创建一个网页,其中将返回数据,我需要,我会打电话的ActiveX控件的页面。问题解决了。

1

这是一个非常糟糕的做法,风险有限,因为您正在'内部'使用它。 但是,如果您的内部网络位于Windows域中,则可以使用Windows身份验证来验证您的用户凭据。

另一种选择是使用加密的cookie。

这些选项中的任何一个都比你所做的更好。

+0

请参阅详细说明 – Andrew 2011-06-01 18:19:39

+0

鉴于'用户名和密码与系统登录一致......'我会缩小使用Windows身份验证的选项。 – 2011-06-01 18:25:33

+0

对不起,“系统”我的意思是网络应用程序。即使我的意思是系统,..我将如何避免在JavaScript中使用纯文本设置凭证参数? – Andrew 2011-06-01 18:31:15

0

首先,密码应该加密,如果没有,则进行散列和腌制(可能多次)。

你不能使用SESSION跟踪用户登录而不是存储密码吗? 如果由于某种原因,您必须存储密码,请在SESSION或数据库中进行。

+0

看到详细说明 – Andrew 2011-06-01 18:19:13