2012-05-15 4 views
2

웹 응용 프로그램을 작성했으며 다른 개발자가 정보를 얻을 수 있도록 허용하려고합니다.앱에 Api 키 구현 (보안)

서버 Im은 그다지 훌륭하지 않으며 많은 요청을 처리 할 수 ​​없으므로 아이디어는 우리의 정보를 쿼리하고자하는 모든 사람에게 API 키를 생성하고 할당하는 것입니다. Api 키를 사용하면 일일 요청을 제한 할 수 있으며 일부 정보를 수집하여 다른 개발자에게 어떤 정보가 정말 유용한 지 확인할 수 있습니다.

것은, 그것의 안전 측면에 신경 쓰고 있습니다. Api 키가 (GET/POST 등을 통해) Google 서버로 전송되기 때문에 누군가 wireshark로 요청을 스니핑하고 많은 노력없이 개발자 API 키를 얻을 수 있습니까?

비밀 키와 API 키를 생성하려고 생각했습니다. 그런 다음 다른 개발자에게 API를 연결하여 API에 해시를 보내도록 지시 할 수 있습니다. 그런 다음 해시가 유효한지 확인하고 요청을 허용합니다 ...하지만 같은 문제가 지속됩니다. 해커는 여전히 해시를 스니핑하고 다른 개발자의 앱을 대신하여 요청할 수 있습니다.

그래서 제 질문은 내가이 문제를 방지 할 수 있습니다 방법

  • 이다?
  • 또는 내 문제는 유효합니까? 그게 진짜 문제 야?
  • 다른 개발자가 내 정보를 너무 복잡하게 만들지 않고 내 정보에 액세스 할 수있는 더 안전하고 안전한 방법이 있습니까?

너희들은 어떻게 생각하니?

+0

나는 이것을 우연히 투표했다 (나는 이것을 읽는 것을 기억할 수 없다). 이 작업을 어떻게 취소 할 수 있습니까? – Gellweiler

답변

2

여기 다른 질문을 여러 개 풀려고합니다.

서버에 대한 요청 수를 제한하는 것이 목표라면 제한 메커니즘을 만들어야합니다. 이것은 사소한 일이 아니지만 라이센스 키가 아닌 IP 주소를 기반으로합니다. 단일 라이센스 사용자가 많은 요청으로 시스템을 습격 할 수 있습니다. 라이센스 메커니즘을 구현하지 않고도 IP 주소를 조절할 수 있습니다.

라이선스 체계를 만들고 싶다면 암호화 등을 이해해야합니다. 이는 사소한 문제입니다. 예를 들어 합법적 인 사용자가 모든 친구와 라이센스 키를 공유하는 것을 중단하려면 어떻게해야합니까? 해커가 귀하의 키를 훔쳐서 모든 친구들과 공유하는 것을 어떻게 막을 수 있습니까?

여러 가지 해결책이 있습니다. 모두 사용자에게 어느 정도의 고통을줍니다. 예를 들어 HTTPS에서 서비스를 실행할 수 있습니다. 스누핑은 중지되지만 성능은 떨어집니다. 특정 횟수의 사용 후에 만료되는 서비스에 대해 "토큰"을 발행 할 수 있습니다. 새 토큰을 받으려면 암호화 교환이 필요합니다 (IP 주소를 확인할 수 있음). "챌린지/응답"유형의 로직 (IP 주소 유효성 검사 포함)이 필요할 수 있습니다. 이러한 모든 단계를 통해 사용자의 삶이 더욱 어려워집니다. 아마 그들이해야 할 추가 작업에 대해 감사하지 않을 것입니다.

+0

당신은 완전합니다. 도와 줘서 고마워! – mpratt

2

스 니프와 관련하여 문제는 서버의 HTTPS로 해결할 수 있습니다.

1

액세스 + 잠재적 인 일부 사용률 제한을 원할 경우 API에 일부 인증을 지정하는 것이 좋습니다. API 키를 사용하여 스니핑을 피하려면 HTTPS가 반드시 있어야합니다. 그 옵션이 아니면 oAuth 1.0 (http://oauth.net/core/1.0/) 또는 Amazon AWS 인증과 같은 해시 스타일 인증을 사용할 수도 있습니다. ID와 비밀번호를 사용하여 API 사용자를 발행하면됩니다.그들은 클라이언트 측에서 비밀을 메시지 본문에 삽입하여 해시를 계산하고 요청에 해시 (비밀이 아닌)를 포함시킴으로써 사용합니다. 수신 측에서는 해시와 메시지 내용에 수행 된 동일한 작업을 비교합니다.

이것은 송수신기를 통해 비밀을 전송하지 않고도 발신자를 확인할 수 있음을 의미합니다 (내용은 여전히 ​​안전하지는 않지만 모든 요청과 함께 유선으로 키를 전달하지 않음). 단점은 개발자가 구현하기가 복잡하다는 것입니다. 라이브러리가있는 oAuth 1.0 패턴을 사용할지라도 약간의 오버 헤드가 있습니다.

나는 3scale에서 일하고 일부 도구가 도움이 될 수도 있습니다 - 우리 시스템은 API 키, oAuth Secret 공유 및 API 속도 제한을 즉시 제공합니다 (http://www.3scale.net 및 PHP 라이브러리 여기에 있습니다 : https://github.com/3scale/3scale_ws_api_for_php).