IE 9表单提交崩溃
IE 9 Form Submit Crash
我在用户登录表单上使用加密技术来避免以纯文本形式传递密码。我在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)中似乎可以做到这一点。
让我知道这个变通方法是否适合你。
- HTML表单提交时未执行外部函数
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将图像上传ajax与表单提交ajax相结合
- Javascript无法处理表单提交
- 如何在我的情况下禁用表单提交
- 加载后的页面与ajax表单提交不起作用
- angularjs-控制器在表单提交时未调用
- 禁用带有字符白名单的表单提交
- 如何使用Google Analytics跟踪表单提交
- 使用javascript将表单提交到iframe目标中
- e.preventDefault在表单提交时被忽略
- AngularJS JQuery Ajax表单提交等效
- JavaScript表单提交帮助
- PHP表单提交和重定向
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- setTimeOut AFTER jQuery表单提交
- 从函数中选择要触发表单提交的正确元素
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- IE 9表单提交崩溃
- Jquery load()在表单提交后运行时导致浏览器崩溃