2012-04-27 3 views
7

제 경우에는 Dropbox API를 사용하고 있습니다. 현재 저는 키와 비밀을 JSON 파일에 저장하고 있습니다. gitignore를 사용하여 Github 저장소에서이를 지킬 수 있도록하는 것이지만, 보안 관점에서 코드에서 사용하는 것보다 낫지는 않습니다. 전에 파이썬을 보호하거나 난처하게 만드는 것에 대한 많은 질문이있었습니다 (보통 상업적인 이유로). 그 대답은 항상 "파이썬이 그걸 의미하지 않습니다."입니다.파이썬 앱에 API 키를 어떻게 저장해야합니까?

따라서 코드를 보호 할 방법이 없지만 API 세부 정보를 공개하지 않고 앱을 배포 할 수있는 솔루션을 찾고 있습니다.

+0

텍스트 파일에 암호화 된 값으로 채 웁니다. 비공개 저장된 암호화 키를 만들고 필요할 때 해독하십시오. 그래도 더 좋은 방법이있을 수 있지만,이 방법은 과거 나를 잘 해 줬습니다. –

+0

누군가가 자신의 컴퓨터에서 프로그램을 실행하고 프로그램이 키를 사용하면 사실상 공개됩니다. WireShark를 가동시켜 프로그램을 연결하고 Dropbox (또는 몇 가지 다른 기준 - 최악의 경우 수백 개의 패킷을 파고들)에 대한 연결 캡처를 필터링하는 것은 천재가 아닙니다. API 키가있는 문자열 리터럴을 변경할 수 없거나 프로그램에 아무 쓸모가 없으므로 프로그램을 난독 화하는 것만으로는 아무 것도 살 수 없습니다. – delnan

+0

@delnan HTTP 트래픽에서 API 키를 볼 수 있습니까? Dropbox는 SSL을 통해 모든 것을 처리합니다. GET 또는 POST 변수를 사용하는지 또는 HTTP 요청의 헤더에 넣는 지 알 수 없습니다. HTTPS 요청으로 암호화되는 것입니까, 아니면 요청 본문입니까? – espekia

답변

2

일반 텍스트. 코드가 배포되면 모든 난독 화 시도는 쓸모 없습니다.

2

귀하의 경우 가능한지 모르겠 음. 하지만 호스팅하는 프록시를 통해 API에 액세스 할 수 있습니다.

파이썬 APP의 요청은 프록시로 이동하고 프록시는 Dropbox API에 요청을하고 파이썬 응용 프로그램에 응답을 반환합니다. 이렇게하면 api 키가 호스팅중인 프록시에있게됩니다. 프록시에 대한 액세스는 원하는 모든 방법으로 제어 할 수 있습니다. (예를 들어, 사용자 이름과 암호)

+0

일반적으로 좋은 해결책이지만 제 경우에는 Dropbox를 사용하기로 결정했습니다. 자원이나 내 서버를 호스팅 할 성향이 없기 때문에 클라이언트 만들기에만 집중하고 싶었습니다. – espekia

1

는 시나리오에 따라 두 가지 방법이 있습니다

하면, 최종 사용자를위한 웹 응용 프로그램을 개발하는 당신의 API 키 공개에 오지 않는 방법으로 호스트하는 경우 . 따라서 파일을 별도의 파일로 보관하고 서버에 업로드하는 것만으로도 괜찮습니다 (서버에 대한 위반이없는 한). 모든 난독 화는 실용적인 이점을 추가하지 않을 것이며, 단지 보안에 대한 잘못된 느낌을 줄 것입니다.

개발자 용 프레임 워크/라이브러리 또는 최종 사용자 용 클라이언트 응용 프로그램을 개발하는 경우 API 키를 자체적으로 생성하도록 요청하십시오.