2011-09-04 3 views
2

웹 사이트에 사용자 등록 양식이 있으며 socket.io를 사용하여 일반 텍스트로 서버에 데이터 (사용자 이름, 암호 및 전자 메일)를 보냅니다. 나는 이것이 정말 나쁜 해결책이라는 것을 알고 있습니다. 그래서 정보를 숨기기 위해 무엇을 사용합니까? 그리고 누군가가 어떻게 정보를 얻을 수 있었는지 설명 할 수있어서 피하는 법을 알았습니까? 나는 jsAES에 대해 들었습니다. 물건을 암호화하지만, 클라이언트와 서버는 어떻게 키를 알 수 있습니까?JavaScript, node.js 및 security

+0

저는이 경험이 거의 없지만 https는 RSA를 사용합니다. 당신은 공개 키를 사용하여 클라이언트 측에서 암호화하고 개인 키 (비밀)로 복호화하는 서버 측에서 암호화합니다. 당신은 RSA를 구현하기를 원할 수도 있습니다. – pimvdb

답변

8

JavaScript로 asymmetric cryptography을 사용할 수 있습니다. JavaScript 암호화 코드 (예 : RSA, , 대칭 AES는이 아님)와 코드에 공개 키가 포함됩니다. 제출시 모든 입력을 암호화하고 개인용 키를 사용하여 암호를 해독 한 서버로 전송합니다. 그러나 숙련 된 공격자는 단순히이 JavaScript를 변경하거나이 클라이언트 측 암호화를 우회하기 위해 자체 JavaScript를 삽입 할 수 있습니다. 또한 자바 스크립트가 필요하며 보안에 민감한 방문자가 사용할 수 없게 될 수도 있습니다.

자신의 솔루션을 배포하는 대신 은 HTTPS을 사용합니다. 키 쌍을 생성하고 인증서를 가져오고 HTTPS 요청을 처리하도록 서버를 구성합니다. HTTP Strict Transport Security을 사용하여 모든 연결에 대해 HTTPS를 적용하십시오.

+0

저는 JavaScript를 사용합니다. 저는 만들고있는 온라인 게임이며 꼭해야합니다. – corazza

+2

@bane 그런 다음 HTTPS를 사용하십시오. 간단하고 잘 지원되며 빠르고 안전하며 [무료로 인증서를 얻을 수 있습니다] (http://www.startssl.com/?app=1). – phihag

+0

이 인증서가 어떻게 작동하는지 설명 할 수 있습니까? 내 웹 사이트는 여전히 온라인 상태가 아니며 도메인 이름을 등록하지도 않았습니다. 인증서없이 소프트웨어를 사용하고 공개 할 때 사용할 수 있습니까? – corazza