IE 9表单提交崩溃

IE 9 Form Submit Crash

本文关键字:崩溃 表单提交 IE      更新时间:2023-09-26

我在用户登录表单上使用加密技术来避免以纯文本形式传递密码。我在PHP会话中存储了一个唯一的challenge值,将该值包含在HTML表单隐藏字段中,然后在提交密码之前使用基于JavaScript的SHA1-1脚本对其进行哈希处理。

我对以上内容本身没有任何问题,但我认为最好解释一下为什么我需要这样做。

我提交的表格是这样的:

var password = sha1(document.forms['loginform'].password.value);
password = sha1(document.forms['loginform'].challenge.value + password);
document.forms['loginform'].challenge.value = '';
document.forms['loginform'].password.value = password;
document.forms['loginform'].style.display = 'none';
document.forms['loginform'].submit();

问题出在第五行。我想隐藏加密的密码值,因为如果我不这样做,就会有人说"那不是我的密码"、"我不喜欢那样"等等

问题是,在提交之前将显示设置为"无",似乎会导致InternetExplorer9崩溃,并显示这样的消息:

Problem Event Name: APPCRASH
Application Name:   iexplore.exe
Application Version:    9.0.8112.16421
Fault Module Name:  MSHTML.dll

所以,我想知道是否有人有更好的方法来做这件事。也就是说,有没有一种好的或"正常"的方法可以在提交前隐藏JavaScript更新的表单值?

感谢

编辑:现在我正在设置密码字段文本颜色以匹配背景。这有点像黑客。我不想把以下作为答案——我真的不同意,这有点像是对我自己的问题竖起大拇指。(我愿意,而不是永远敞开大门:)。这不是什么大问题。我暂时不谈。

这样的"加密技术"没有任何帮助。您仍在以纯文本形式传递密码。想象某人使用嗅探器并获得密码哈希(和会话cookie…),他可以轻松登录系统。

如果需要安全性,请使用https

我刚刚遇到了一个类似的问题(请参阅此处)。微软的IE开发团队已经确认这是一个渲染问题。如果这是同一件事,那么它似乎与表单提交无关,而是在设置输入字段的值并在指定某些样式时立即隐藏字段的父字段时发生的(请参见上面的链接)。微软的建议是强制IE使用IE8渲染引擎,但我发现,将输入包装在另一个没有样式的元素(例如SPAN或DIV)中似乎可以做到这一点。

让我知道这个变通方法是否适合你。