2011-02-03 11 views
4

필자는 입력을 받고 개발자가 API처럼 사용할 출력을 전달하는 알고리즘을 가지고 있습니다. 서비스 거부 공격과 과도한 과용을 방지하기 위해 속도 제한이나 보호를 원합니다. 어떤 옵션이 있습니까? 계정과 API 키를 제공합니까? 어떻게 일반적으로 효과가 있습니까? 그리고이 시나리오에서 가능한 다른 아이디어는 무엇입니까?공용 API의 속도를 어떻게 제한합니까?

+0

모든 속도 제한을 가능하게합니다 이는 PHP plugin for 3scale있다? 그게 정말로 합리적입니까? 나는 요즘 대부분의 PHP 설치가 압축 풀기가 기본적으로 설치 될 것이라고 기대합니까? 그렇습니다. –

+4

제목은 질문과 관련이없는 것처럼 보입니다. –

+0

unzip! = rate limit – dogmatic69

답변

4

계정 및 API 키는 좋은 아이디어처럼 들리지만, 의도 한 개발자가 아닌 다른 사용자가 API에 액세스 할 수 없으면 계정 키와 API 키가 좋은 생각처럼 들립니다.

특정 API가 마지막으로 액세스되었을 때 간단한 데이터베이스 테이블을 로깅하고 특정 시간 프레임에서 너무 많이 액세스되는 경우 재사용을 거부하는 것은 매우 간단해야합니다. 가능하면 다음 번에 API를 출력에 다시 사용할 수 있도록 반환하십시오. 따라서 개발자는 시행 착오적 인 방법을 사용하지 않고 그에 따라 스로틀을 조절할 수 있습니다.

동일한 입력을 반복해서 사용하거나 완전히 무작위로 입력해야 할 것으로 예상됩니까? API를 다시 사용할 준비가 될 때까지 출력을 캐싱하고 개발자에게만 캐시를 제공하는 것은 어떻습니까? 이 방법은 계정과 키에 훨씬 덜 의존적입니다.

1

정확성을 희생하면서 약간 덜 복잡한 다른 옵션은 IP 주소를 사용합니다. 분명히 이것은 극복하기가 더 쉽지만, IP 주소가 무엇인지 모르는 일반 사용자에게는 효과적입니다. 또한 쉽게 설정할 수 있습니다. 그것은 모든 응용 프로그램의 복잡성과 당신은 확실히 갈 수있는 좋은 방법이 될 수

3

API 키에서 그것을 할 수있어 시간의 양에 따라 달라집니다

도 openAuth (http://oauth.net)이 만약 당신이 시나리오 곳 최종 사용자는 제 3자가 만든 앱을 통해 서비스에 액세스하게됩니다.

요금 제한/키 관리를 직접 코딩하지 않으려면 http://www.3scale.net/을 살펴 보는 것이 좋습니다.이 서비스는 많은 무료 서비스를 제공합니다 (개발자 포털, 청구서 등). 면책 조항으로, 나는 거기에서 일하므로 약간의 편견이있을 수 있지만 가능한 한 간단하게 정확하게하려고 노력합니다!

내가 추가해야

, 당신은 당신의 코드에 드롭 할 수 있고 그 등 당신은 압축 해제 API를 제공 할

관련 문제