2012-09-30 5 views
0

가능한 중복 :
Best Practices for securing a REST API/web service안전 나머지 API를

내가 데스크톱 응용 프로그램을 만들고있어이 응용 프로그램에서 내가 데이터를 삭제// 업데이트/읽기 만들 수있을 것입니다 데이터베이스에서. 이 작업에 대해 나는 PHP REST API를 만들었으므로 /api/users으로 전체 목록을 얻고 /api/users/1으로 사용자 1을 선택할 수 있습니다. 나는 이것을 잘하는 방법이라고 생각합니다. 더 나은 방법을 알면 나에게 말할 수 있습니다.

이제 문제는 내가 먼저 응용 프로그램에 로그인해야하므로 로그인하고 데이터를 보낼 수 있지만 인증 방법은 무엇입니까?

저는 C# + PHP REST API를 사용하고 있습니다. 보안을 위해 사용자가 모든 요청을 인증 받았음을 알고 싶습니다. REST API를 사용하면 일부 데이터를 서버에 매우 쉽게 보낼 수 있지만 적절한 방식으로이를 보호하는 방법은 무엇입니까?

내 질문이 분명하기를 바랍니다.

+0

은 http 수준의 인증 (예 : http 기본)을 사용하거나 모든 요청에 ​​api/사용자 키가 필요합니다 (예 : blah blah). 이렇게하는 옳고 그른 방법은 없습니다. –

+0

이것이 흥미로운 지 모르겠다. [Codeigniter Restserver] (https://github.com/philsturgeon/codeigniter-restserver) – zer02

답변

2

자신 만의 REST API를 만들고 기존 프레임 워크를 사용하지 않으려면 인증을 반환하는 간단한 로그인 시스템을 제안합니다 어떤 종류의 열쇠.

응용 프로그램이 로그인 요청을하면 사용자의 로그인/암호를 확인하고 후속 요청에 사용될 키를 반환한다고 가정합니다.

api 키가 특정 기간 (세션 쿠키와 같은) 후에 만료되고 세션 하이재킹으로 인한 잠재적 문제를 피하기 위해 사용자를 다시 인증하도록하는 것이 이상적입니다.

0

몇 가지 해결책이 있습니다. 하나는 httpd에 내장 된 기능인 HTTP 인증을 사용하는 것이므로 .htaccess에 설정하면됩니다.

아니면 모든 사용자가 고유 한 응용 프로그램 토큰 (예 : 'foo는') 및이 응용 프로그램 토큰을 필요로 각 API 방법을 부여 할 수 있습니다 즉 첫번째 인수로 전달 될

하거나 loginlogout 그리고 만약 같은 API 메소드를 구현 주어진 l/p에 대한 로그인이 성공하면 해당 사용자에 대한 세션 항목을 생성하고 이전 예에서와 같이 모든 api 메소드에서 필요한 고유 한 세션 id를 반환합니다.

마지막으로 하나 더 많은 레이어를 얻을 수 있습니다. 액세스를 제어하고 어떤 l/p가 손상된 경우 암호를 새 암호로 변경하여 쉽게 공격자를 차단할 수 있습니다. 그리고 사용자에 대해 더 많이 알고 있습니다. 애플리케이션 토큰을 사용하면 얼마나 많은 순 사용자가 될 수 있는지 알 수 없습니다.

관련 문제