IE 9 Form Submit Crash - PullRequest
       5

IE 9 Form Submit Crash

2 голосов
/ 27 января 2012

Я использую технику шифрования в форме входа пользователя, чтобы не передавать пароли в виде простого текста. Я сохраняю уникальное значение запроса в сеансе PHP, включаю это же значение в скрытое поле формы HTML, а затем использую скрипт SHA1-1 на основе JavaScript для хеширования пароля перед его отправкой. (Затем он сравнивается с тем же на стороне сервера, используя вызов, сохраненный в переменной сеанса).

У меня нет проблем с самим вышесказанным, но я подумал, что лучше всего объяснить, почему я должен это делать.

Я отправляю форму следующим образом:

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();

Проблема в 5-й строке. Я хотел бы скрыть зашифрованное значение пароля из поля зрения, потому что если я этого не сделаю, у меня будут люди, говорящие «это был не мой пароль», «мне это не нравится» и т. Д.

Дело в том, что установка display на 'none' перед отправкой, похоже, приводит к сбою Internet Explorer 9 с таким сообщением:

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

Итак, мне было интересно, есть ли у кого-нибудь лучший способ сделать это. То есть, есть хороший или «нормальный» способ скрыть обновленное значение JavaScript в форме перед отправкой?

Спасибо

Edit: Сейчас я устанавливаю цвет текста поля пароля, чтобы он соответствовал фону. Это немного взломать. Я не хочу отмечать ответ ниже - я не совсем согласен, и это немного похоже на мой собственный вопрос. (Я буду, а не оставлять это открытым навсегда:). Это не большая проблема. Я оставлю это немного.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Такая «техника шифрования» ничего не дает.Вы по-прежнему передаете пароли в виде простого текста.Представляя, что кто-то использует сниффер и получил хэш пароля (и cookie-файл сессии), он может легко войти в систему.

Если вы хотите обеспечить безопасность, используйте https .

0 голосов
/ 11 апреля 2012

Я только что столкнулся с подобной проблемой ( см. Здесь ). Команда разработчиков Microsoft IE подтвердила, что это проблема рендеринга. Если это одно и то же, похоже, что это не связано с отправкой формы, а скорее происходит при установке значения поля ввода и немедленном скрытии родителя поля при назначении определенных стилей ( см. Ссылку выше ). Microsoft предложила заставить IE использовать механизм рендеринга IE8, но я обнаружил, что обертывание ввода в другом элементе (например, SPAN или DIV) без стилей, похоже, помогает.

Дайте мне знать, если этот обходной путь работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...