암호를 일반 텍스트로 전달하지 않도록 사용자 로그인 양식에 암호화 기술을 사용하고 있습니다. PHP 세션에서 고유 한 시도 값을 저장하고 HTML 양식의 숨겨진 필드에 동일한 값을 포함시킨 다음 제출하기 전에 JavaScript 기반 SHA1-1 스크립트를 사용하여 암호를 해싱합니다. (그러면 세션 변수에 저장된 챌린지를 사용하여 서버 측과 동일하게 비교됩니다.)IE 9 양식 제출 크래시
위의 내용 자체에는 문제가 없지만 왜 이렇게해야하는지 설명하는 것이 가장 좋습니다.
나는 다음과 같은 양식을 제출하고 있습니다 :
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 라인입니다. 암호화되지 않은 암호 값을보기에서 숨기고 싶습니다. 그렇지 않으면 사람들이 '내 암호가 아닙니다', '그다지 좋아하지 않습니다'등의 메시지가 표시됩니다.
것은 제출하기 전에,이 같은 메시지와 함께 인터넷 익스플로러 9 충돌 것 같다 '없음'으로 표시를 설정한다 : 사람이 갈 수있는 더 좋은 방법이 있다면 그래서
Problem Event Name: APPCRASH
Application Name: iexplore.exe
Application Version: 9.0.8112.16421
Fault Module Name: MSHTML.dll
이 궁금 해서요 이것에 대해. 즉, 제출하기 전에 JavaScript 업데이트 된 양식 값을 숨기는 좋은 방법이나 '정상적인'방법이 있습니까?
감사
편집 : 지금은 배경을 일치하도록 암호 필드의 텍스트 색상을 설정하고있어 들어 . 그것은 약간의 해킹입니다. 저는 답을 아래에 표시하고 싶지 않습니다. 저는 정말로 동의하지 않습니다. 그리고 그것은 제 자신의 질문에 대해 엄지 손가락처럼 보입니다. (나는 이것을 열어 놓고 영원히 떠나지 않을 것이다.). 큰 문제는 아닙니다. 나는 그것을 조금 남겨 둘 것이다.
답변 해 주셔서 감사합니다. 아니요, 암호를 일반 텍스트로 전달하지 않고 고유 한 코드와 해시 값을 결합하여 전달합니다. HTTP 헤더에서 '사과'를 지나가는 단계가되어야합니다. 데이터 보호는이 특정 사이트의 보안 침해를 예방하는 것만큼이나 중요합니다. – stackuser10210
@ stackuser10210 https를 사용하지 않는다면 아무 것도 보안이 될 수 없다는 뜻입니다. 귀하의 http 요청은 그것이 무엇인지 훔칠 수 있습니다. – xdazz
그것은 인터넷 카페 등의 시대에 취해진 추가 조치이며 꽤 가치가있다. 이것은 나의 invenetion이 아니다. 야후는 잠시 동안 이메일 로그인과 비슷한 것을 사용하고있다. (모든 로그인에 대해 HTTPS를 선행한다고 생각한다.) 아마 그들은 비동기 게시물 (확실하지 않음)을 사용한다고 생각합니다. 나는 그것에 의지하고 싶지 않았다. – stackuser10210