2012-03-07 3 views
4

일부 API는 URL 매개 변수로 API 키를 전달하고 다른 일부는 HTTP 헤더에 전달한 것으로 나타났습니다. REST API에 크게 의존 할 웹 기반 응용 프로그램을 개발 중이며 지금은 API 키가 URL 매개 변수로 전달되도록 그냥 사용하고 있습니다.HEADER 또는 URL에 API 키를 전달 하시겠습니까?

제 질문은 그 옵션 중 하나가 다른 것보다 안전한지 여부입니다.

답변

5

두 경우 모두 API 키가 암호화되지 않은 채 전달됩니다. 따라서 HTTPS를 사용하지 않는 한 두 가지 모두 안전하지 않습니다. 실제로

는 HTTP 헤더 때문에 좀 더 안전한 것으로 판명 - URL이 서버 측에서 액세스 로그에 저장됩니다

  1. URL을 브라우저 기록
  2. 을에 저장됩니다

참고 사항 : 사용자가 자격 증명으로 로그인하도록 요청하지 않는 한 웹을 통한 REST API를 보호 할 수 없습니다. 누구든지 쉽게 API 키를 식별하고 서버에 요청할 수 있습니다.

편집 : @는 segfault의 의견에 응답 -

웹 사이트 사용자가 일반적으로 API 키를 입력하지 않습니다. 그들은 사용자 이름과 암호를 입력하며, 일반적으로 호출되는 것처럼 API 키나 액세스 토큰을 얻기 위해 거래됩니다.

사용자 이름과 비밀번호 대신 사용자가 API 키를 입력하도록 강요하면 보안이 강화됩니다. 하지만 제가 말씀 드렸듯이, 심각한 적용을 보지 못했습니다.

+0

"당신이 불안 백엔드 API는 API 키를 기대하는 경우, 당신은 AJAX가 브라우저에서 호출하고 있습니다, 당신은 자격 증명 어떤 종류의 사용자를 요구하지 않는다"

은보다 구체적으로, 나는 의미 HTTP 헤더의 일부로 만드는 작은 장점에 대해서는 생각하지 않습니다. 그렇게 할 것입니다. 그것이 HTTP라면 API가 HTTPS에서 실행되는 경우에만 식별하고 도용하고 API 키를 쉽게 식별 할 수 없습니다. – ryanzec

+0

@ryanzec : re. 제쳐두고 - HTTPS를 사용하는 경우에도 방화 광에서 통신을 검사하고 API 키를 추출 할 수 있습니다. 실제로 API 키만으로 REST API를 보호 할 수는 없습니다. –

+0

죄송 합니다만, 제쳐 놓고 잘못되었습니다. "방화범과 함께 API 키 추출"사용자는 승인 된 사용자입니다! 그 사람이 사용자가 로그인해야하는 경우 자신의 암호를 알고 같은 사람입니다 .... – Segfault

관련 문제