는 방법을 구현할 수 있 server-side 속도 제한에 대한 Perl 웹 서비스입니까?

StackOverflow https://stackoverflow.com/questions/501405

  •  20-08-2019
  •  | 
  •  

문제

나는 문자를 검색할 패턴을 설명하는 기반으로 CGI/빠른 컴퓨터 그래픽스 인터페이스 웹 서비스하고 싶을 평가한 클라이언트 IP 주소를 중지 공격적인 클라이언트는 원인이 너무 많은 작품입니다.

을 봤어요 주위에 어떤 코드고 알고리즘::TokenBucket 에 CPAN 하지만 그는 클라이언트 요청에 대한;그것은 지속성과가 없이 사용자별 config 그래서 정말 유용한 서버측 속도 제한하고 있다.

내가 찾는 제안이 뭔가를 이미 존재하는,그렇지 않으면 내가 필요로 나 자신의 기반에서 몇 가지 간단한 지속성과 같이 묶어 DB_File 당 IP 주소와 일부를 배치 작업을 수행하는 토큰을 관리합니다.

도움이 되었습니까?

해결책

나는 사용했다 캐시 :: Fastmmap IP 주소 당 HITS를 추적하여 속도 제한의 경우. 캐시이므로 시간이 지남에 따라 데이터가 만료되지만 크기를 설정하고 시간을 만료하면 문제가되지 않아야합니다.

IP 주소는 해시 키이고 해시 값은 타임 스탬프 배열입니다. 두 번째 데이터 구조가 있습니다 (또한 뒷받침 캐시 :: Fastmmap) 이는 금지 된 IP 주소의 해시이며, 첫 번째 구조의 데이터에 따라 업데이트되었습니다.

다른 팁

나는 그것이 무엇을 요청했지만 당신은 고려사항을 처리해 다른 스택에서는 이미 완료 되었습니까?분명히 내가 알지 못하는 배포에 스택이 있는 경우에,그러나 아파치 사용할 수 있습니 mod_evasive.또는 당신 리눅스에서 당신이 할 수있다 iptables 그것의 일을 사용하여 다음과 같습니다.

#Allow only 12 connections per IP
/sbin/iptables -A INPUT -p tcp --dport 80 -m conn-limit --connlimit-above 12 -j REJECT --reject-with tcp-reset

확실히 더 복잡한 규칙이 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top