2011-09-24 4 views
-1

나는 하나의 IP 주소 (스팸 차단 방법)로 사용자가 가질 수있는 로그인 수를 제한하는 요구 사항이있는 애플리케이션을 작성 중이다. 어떤 이유로 든 captcha를 사용할 수 없습니다!IP로부터의 요청 횟수 제한하기

나는이 작업을하기 위해 생각할 수있는 유일한 두 가지 방법 중 하나는 데이터베이스에 저장하는 것이고, 각 IP에서 들어오는 요청의 수입니다. 또는 동일한 정보와 관련된 추적 쿠키를 저장합니다.

이제 첫 번째 모드의 단점은 너무 많은 db 트래픽이 발생한다는 것입니다. 응용 프로그램은 많은 사람들이 사용하게 될 것입니다. 이 정보를 쿠키로 저장하는 단점은 사용자가 다시 광고 시작을 취소 할 수 있다는 것입니다.

높은 db 트래픽과 쿠키 기반 추적과의 느슨한 연결을 처리 할 수있는 방법이 있다면 제안이 필요합니다.

+0

좋습니다. 방금 일어난 작은 모듈이 있습니다. 플래시 쿠키 제안을 위해 – Rohan

답변

0

IP를 가져 와서 어딘가에 저장하려면 $_SERVER['REMOTE_ADDR']을 사용하여 사용자의 IP를 얻고 데이터베이스에 "ip"와 같은 필드를 만들고 SQL에서 IP가 있는지 확인하도록 쿼리를 만듭니다 사용되었다. 플래시 쿠키와 같은 다른 추적 방법도 있습니다. 일반적으로 사람들은 쿠키의 존재를 모르기 때문에 대부분의 사람들은이를 지우는 방법을 모릅니다.

+0

-1, 그들은 악합니다. – Clive

+0

일부 사람들은 공유 인터넷에서 동일한 IP를 사용하므로 새로운 옵션을 찾아야합니다. 나는 당신과 동의하지만 플래시 쿠키와 같은 것이다. – Grego

+0

Brian은 회사에 정적 IP 주소 집합과 NAT가 있음을 알리는 아주 좋은 지적이 있습니다.이 IP 주소 기록은 확실히 실패 할 것입니다. Google이 Gmail 및 기타 제품에서 어떻게 작동하는지 알고 싶습니다. 그들은 당신의 IP를 기록하고 쿠키를 버리십시오. 그러나 물건을 확보하는 다른 방법이있을 수 있습니까? – Rohan

1

당신은 "로그인"과 웹 응용 프로그램에 대해 이야기하고 있습니다. 따라서 어떤 종류의 세션이 유지됩니다. somwhere. 이러한 세션을 만들 때 IP 당 활성 세션 수를 추적하고 해당 임계 값에 도달하면 새 세션을 할당하지 않아야합니다.

프레임 워크/환경에 대한 구체적인 정보가 없으면 누구나 제공 할 수있는 최선의 답변입니다.

NAT (네트워크 주소 변환)로 인해이 방법이 여러 가지 방법으로 실패합니다. 예를 들어, 저희 사무실에는 X 명당 하나의 공인 IP 주소가 있습니다. 내부 네트워크는 사설 IP 공간에 있습니다.

+0

@Downvoter, 관심있는 댓글? –

+0

네 .. NAT에 대해 좋은 점을 제기 한 것 같습니다. 연속되는 세션의 수는 제한되어 있습니다. 특정 IP에 대한 총 세션 수가 제한되어야합니다. – Rohan

+0

그건 ... 내가 말한거야. * IP 당 활성 세션 수 추적 * –