2012-07-10 3 views
1

REST API를 설계하는 중이고 암호화 작업을 결정하는 중입니다. 우리는 현재 모든 요청/응답에 대해 https를 사용하고 있지만 다양한 로그 (dns, browser, ...)는 일반 텍스트 URL을 기록합니다. 이렇게하면 "www.mysite.com/user/credit-card-number/"와 같이 중요한 데이터를 URL에 보낼 때 문제가 발생합니다. SSL/TLS 공개/개인 키를 사용하여 경로 매개 변수를 암호화하는 방법이 있습니까? 예를 들어 "www.mysite.com/user/credit-card-number/"는 "www.mysite.com/encryptedstring"으로 바뀝니다.SSL을 통한 API 암호화

+0

URL에 CC 번호를 포함해야합니까? – Jeremy

+0

나는 당신이 왜 그것을 필요로하는지 이해하지 못한다. 그러나 클라이언트가 공개 키 (서버 인증서에서)를 사용하여 암호화하고 서버가 개인 키를 사용하여 암호를 해독하기를 원하는 경우 [여기 Python의 예] (http://stackoverflow.com/a/7670551/4279)를 참조하십시오. – jfs

+0

python 예제는 내가하고 싶은 것과 비슷합니다. 대규모 프로젝트에서 사용하기에 충분히 안전하다고 생각합니까? – dpayne

답변

2

중요한 데이터를 URL에 넣지 말 것을 적극 권장합니다. 무언가를 식별 할 필요가 있다면 적어도 무작위로 생성 된 문자열/UUID/토큰/그것이 식별되는 것이 무엇이든지 무엇이든 사용할 수 있습니다.

수동 암호화/해독 처리는 사용중인 언어/프레임 워크에 따라 다릅니다. 예를 들어, Java를 사용하는 경우 SSL/TLS 용 Java 프레임 워크 인 JSSE에서 일부 Google 검색을 수행하십시오.

자동으로 암호화/암호 해독을 수행 할 제품을 찾고 있다면 사용중인 프레임 워크에 따라 달라질 것이라고 생각합니다.

+0

우리는 중요한 데이터를 URL에 넣고 싶지 않습니다. 토큰을 생성하고 대신 URL에서 사용하는 것이 가능하다는 것을 알고 있습니다.하지만 모든 요청에 ​​대해 클라이언트와 개발자의 작업이 필요합니다. 내가 원하는 것은 요청을 보내기 전에 SSL 키를 사용하여 URL을 암호화하는 현재 REST API 프레임 워크에 암호화 섹션을 추가하는 것입니다. 이 방법은 클라이언트/개발자가 프레임 워크에서 돌보고 있기 때문에 암호화가 투명해질 수 있습니다. – dpayne

0

제대로 이해하면 URL이 SSL/TLS 채널을 통해 암호화되는지 묻는 중입니다. this SO question가 지적한대로 대답은 '예'입니다. TLS를 통해 대상 서버의 IP 주소와 포트를 제외한 모든 클라이언트와 서버간에 암호화됩니다. (여기에는 http headers도 포함됩니다.)

EDIT : 다시 읽은 후 로그되는 URL을 중지하는 데 관심이있는 것으로 나타났습니다. 이 작업을 수행하는 유일한 방법은 서버의 URL을 변경하는 것입니다. 별로 도움이되지 않지만 제 제안은 URL에 cc 번호를 두거나 대신 파생 된 키를 사용하지 않는 것입니다.

+0

TLS가 모든 것을 암호화하지만 DNS 로그와 브라우저 로그 (특히 GET 요청의 경우)는 암호화되지 않은 URL을 저장한다는 것을 알고 있습니다. 같은 포스트 Zach Scrivena에 따르면 많은 DNS 서버 로그가이를 수행한다고 언급합니다. – dpayne