위조장에서는 이것을 속도 제어라고하며 트래픽 관리에서는 "트래픽 형성"과 유사합니다. 기본적으로 시간당 제한된 사용을 허용하므로 예를 들어 분당 10 회의 요청 만 허용 할 수 있습니다.
각 요청에 대해 원격 주소 (C에서 getpeername())를 결정하면이 기능은 항상 원격 사용자 IP 주소가됩니다. 그런 다음 요청을 처리하는 방법에 대한 시간주기를 간단히 계산하고 제한을 초과하는 경우 무엇이든 할 수 있습니다. 의사 코드에서
Get block for remote ip
If time-now is new window, then reset usage to zero
Add one to usage count
If usage > allowance then .....
Else if usage > allowance*0.75 then slow-down
Else ok
나는, 그런 그들은 또한 버스트를 허용하고 만 지속적인 부하를 제한하는 경향이 한 시간 등 매 분마다 같은 여러 기간 동안 보통 평균 대부분의 구현을 하나의 기간을 표시하지만, 한 동안 이는 허용하려는 프로필에 따라 다릅니다.
API의 경우 하드웨어 오류가 아닌 요청의 속도가 느려지는 것이 정상입니다. 상대방의 클라이언트가 오류를 처리 할 것이라는 보장은 없습니다. 사용자 화면 인 경우 한계를 초과하여 표시 할 수 있습니다.
물론 원하는 모든 차원, IP 주소, 참조, 브라우저 유형 !, 페이지 URL, 쿠키로 제한 할 수 있습니다. getpeername을 사용하는 경우 공통 개인 라우터 뒤에있는 경우 여러 명의 동시 사용자가 모두 동일한 원격 IP 주소를 가질 수 있습니다.
출처
2013-03-18 03:41:10
rlb
100 % 확신하지 못했습니다. 그들은 요청의 소스 인 원격 IP 주소를 살펴볼 것입니다. "요청하는 사이트"는 무엇을 의미합니까? – Anorov
그래서 웹 페이지에서 XHR에 의해 요청이 내려지면 사이트를 방문한 사람이 아닌 웹 페이지에서 요금 제한을 받게됩니다. – NickAldwin
그들은 애플리케이션의 사용자가 아니라 애플리케이션을 기반으로 API 키를 제한/전달하려고합니다. 맞습니까? – NickAldwin