2012-01-27 5 views
2

암호를 일반 텍스트로 전달하지 않도록 사용자 로그인 양식에 암호화 기술을 사용하고 있습니다. 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 업데이트 된 양식 값을 숨기는 좋은 방법이나 '정상적인'방법이 있습니까?

감사

편집 : 지금은 배경을 일치하도록 암호 필드의 텍스트 색상을 설정하고있어 들어 . 그것은 약간의 해킹입니다. 저는 답을 아래에 표시하고 싶지 않습니다. 저는 정말로 동의하지 않습니다. 그리고 그것은 제 자신의 질문에 대해 엄지 손가락처럼 보입니다. (나는 이것을 열어 놓고 영원히 떠나지 않을 것이다.). 큰 문제는 아닙니다. 나는 그것을 조금 남겨 둘 것이다.

답변

1

"암호화 기술"은 아무런 도움이되지 않습니다. 암호는 일반 텍스트로 전달됩니다. 이미징 누군가가 스니퍼를 사용하고 암호 해시 (및 세션 쿠키 ..)를 가지고있어, 그는 시스템에 쉽게 로그인 할 수 있습니다.

보안을 원하면 https을 사용하십시오.

+0

답변 해 주셔서 감사합니다. 아니요, 암호를 일반 텍스트로 전달하지 않고 고유 한 코드와 해시 값을 결합하여 전달합니다. HTTP 헤더에서 '사과'를 지나가는 단계가되어야합니다. 데이터 보호는이 특정 사이트의 보안 침해를 예방하는 것만큼이나 중요합니다. – stackuser10210

+0

@ stackuser10210 https를 사용하지 않는다면 아무 것도 보안이 될 수 없다는 뜻입니다. 귀하의 http 요청은 그것이 무엇인지 훔칠 수 있습니다. – xdazz

+0

그것은 인터넷 카페 등의 시대에 취해진 추가 조치이며 꽤 가치가있다. 이것은 나의 invenetion이 아니다. 야후는 잠시 동안 이메일 로그인과 비슷한 것을 사용하고있다. (모든 로그인에 대해 HTTPS를 선행한다고 생각한다.) 아마 그들은 비동기 게시물 (확실하지 않음)을 사용한다고 생각합니다. 나는 그것에 의지하고 싶지 않았다. – stackuser10210

0

방금 ​​비슷한 문제가 발생했습니다 (see here). Microsoft의 IE 개발 팀이 렌더링 문제임을 확인했습니다. 이것이 동일한 경우 폼 제출과 관련이없는 것처럼 보이지만 입력 필드 값을 설정하고 특정 스타일이 할당 될 때 필드 부모를 즉시 숨길 때 발생합니다 (see above link). 마이크로 소프트의 제안은 IE가 IE8 렌더링 엔진을 사용하도록 강제하는 것이었지만 스타일이없는 다른 요소 (예 : SPAN 또는 DIV)에 입력을 래핑하는 것이 트릭을 수행하는 것으로 나타났습니다.

이 해결 방법이 적합한 지 알고 싶습니다.