2009-12-26 4 views
21

내 웹 사이트에 로그인하기위한 jquery 대화 상자 모달 상자 팝업이 있습니다. 사용자가 클릭은 다음과 같이이 login.php 파일에 POST 요청을 수행 로그인하면 :자바 스크립트에서 MD5를 사용하여 비밀번호를 전송하는 방법

$.post(
     'includes/login.php', 
     { user: username, pass: password }, 
     onLogin, 
     'json'); 

어떻게 POST 요청에 넣어 전에 암호에 대한 MD5해야합니까? 또한, 사용자의 암호를 MD5()를 사용하여 MySQL 데이터베이스에 저장 했으므로 저장 한 암호 버전과 제출 된 암호의 MD5를 비교하고 싶습니다. 대답하는 사람 덕분에.

+13

더 나은 사용 SSL : 당신에 방문 할 수있는 다른 해시 계산 알고리즘에 대한 자세한 정보와 지원에 대한

. – Gumbo

+0

검보 (Gumbo)에 동의합니다. 그런 다음 서버 측에서 SHA256을 사용하십시오. – AntonioCS

+2

SSL을 사용할 수 있지만 암호화 된 http 헤더 내에서 비밀번호를 암호화하고 싶습니다. – adhanlon

답변

27

crypto-js은 많은 암호화 알고리즘이 포함 된 풍부한 자바 스크립트 라이브러리입니다.

당신이 할 수있는 일은 단지 CryptoJS.MD5(password)

+12

이 플러그인은 어떤 이유로 든 더 이상 사용할 수 없습니다. 다음 버전이 있습니다. http://www.richardpeacock.com/dev/files/jquery.md5.js.txt – Rob

+5

더 많은 표준을 사용하는 것이 좋습니다. http://code.google.com/p/crypto- js/crypto-js를 사용하고 필요한 암호화에 JS를 포함시킵니다. –

+2

나는이 대답이 링크 된 플러그인이 현재 사용할 수없는 것으로 보인다고해서 약간의 사랑과 관심이 필요하다고 생각한다. – Kev

4

이 페이지 체크 아웃 할 수 있습니다 : (MD5는 암호화 보안 IIRC되지 않습니다) 암호를 보호하는 것이 중요한 경우 http://pajhome.org.uk/crypt/md5/

그러나, 당신이 정말로 SHA256 같은 것을 사용해야합니다. 더 나아가서는 TLS를 사용하고 cert를 사용하여 https를 사용할 수 있도록하는 것이 좋습니다.

+0

답장을 보내 주셔서 감사합니다. 내 웹 사이트에 https를 사용하고 있습니다.하지만 어떤 이유로 아파치는 페이지를 전송할 때 암호화를 사용하지만 페이지가로드 된 후에도 https를 사용하지만 페이지는 암호화되지 않습니다. 제출할 때 로그인 정보를 암호화 할 것이라고 생각하십니까? – adhanlon

+0

저는 전문가는 아니지만 테스트 머신을 스니핑하는 패킷을 사용하여 암호화되었는지 여부를 확인할 수 있습니다. – SapphireSun

26

사람이 스니핑 경우

$.post(
    'includes/login.php', 
    { user: username, pass: CryptoJS.MD5(password) }, 
    onLogin, 
    'json'); 
하여 일반 텍스트 HTTP 트래픽 (또는 캐시/쿠키) 암호 그냥 해시에 암호를 전환하는 것은 도움이되지 않습니다 호출입니다 - 해시 비밀번호는 일반 텍스트뿐 아니라 "재생"될 수 있습니다. 클라이언트는 (날짜와 시간 등) 다소 임의 뭔가 암호를 해시해야 여기에 "AUTH CRAM-MD5"섹션을 참조하십시오 : 응답에서 http://www.fehcom.de/qmail/smtpauth.html

+4

+1). 이것이 안전하지 않다고 설명하는 유일한 대답입니다. – Pablo

+0

SSL을 사용하는 것이 안전하며 그 질문은 그렇지 않다고 말하지 않습니다. – malthe

+0

@malthe 기본 인증은 SSL – Motes

2

는 JT 할 수 있습니다. 당신은 맞습니다, 암호만으로 된 HTML은 중간 공격자의 영향을받습니다. 그러나, 당신은이 서버가 각 시도에 대한 새 GUID를 생성하는 것이 사람 - 인 - 중간을 ...에서 패배 할

$.post(
    'includes/login.php', 
    { user: username, pass: $.md5(password + GUID) }, 
    onLogin, 
    'json'); 

... 서버에서 GUID로 씨앗 할 수 있습니다.

+2

네, 좋은 생각입니다. 이러한 유형의 도전/대응 접근법은 http://pajhome.org.uk/crypt/md5/auth.html에 포함되어 있습니다. – Menace

15

이 경우 CryptoJS를 사용하는 것이 좋습니다.

기본적으로 CryptoJS는 모범 사례와 패턴을 사용하여 JavaScript로 구현되는 표준 및 보안 암호화 알고리즘 모음입니다. 그들은 빠르며 일관되고 간단한 인터페이스를 가지고 있습니다.

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script> 
<script> 
    var passhash = CryptoJS.MD5(password).toString(); 

    $.post(
     'includes/login.php', 
     { user: username, pass: passhash }, 
     onLogin, 
     'json'); 
</script> 

그래서이 스크립트는 서버에 암호 문자열의 해시를 게시 할 예정입니다 :

그래서 경우에 당신은 다음과 같이 할 암호 문자열의 해시 (MD5)를 계산합니다. 연결을 확보하기

http://code.google.com/p/crypto-js/

+0

nice 대답 : –

+0

이 답변을 주셔서 감사합니다 ... 암호화/암호 해독 방법을 찾고 있습니다. JavaScript와 C#/VB.NET 사이에 자바 스크립트가 권장됩니다.이 대답은 http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs)에서도 볼 수 있습니다. .110) .aspx for C# –

관련 문제