2011-04-25 4 views
6

이메일에 보내는 연락처 양식이 있으며 최근에 일종의 스팸 공격에 의해 공격을 받았습니다 ... 같은 IP 주소에서 밤새 76k 개의 이메일을 받았습니다. 그것은 나를 정말로 화나게했다. 이 문제를 해결하려면 어떻게해야합니까? 나는 captcha를 구현할 수 있다는 것을 알고 있지만 나는 그것을 원하지 않는다. : \

여러 가지 양식 제출을 방지하려면 어떻게해야합니까? 이 경우

+0

'$ _SESSION'을 사용하여 연락처 양식이 제출 된 마지막 시간과이 세션 중에 제출 한 횟수를 저장할 수 있습니다. 개수가 3을 초과하고 마지막 시간이 5 분 미만인 경우 스팸을 방지하기 위해 경고를 게시하고 마지막으로 업데이트하십시오. – Khez

+1

@Khez 클라이언트가 쿠키를 처리하는 경우에만 작동합니다. 그렇지 않은 경우 각 요청에 대해 새 세션이 만들어집니다. 나는 이것이 spammer proof라고 생각하지 않는다. –

+0

@James 사실, 그 이유는 단지 댓글을 달았고 대답하지 않았습니다. 올바른 방향으로 그를 밀어 붙이려 고했습니다. – Khez

답변

10

다른 방법의 수 :

  • CAPTCHA (당신은 이미 그것을 좋아하지 않았지만 나는 t은 아마도 사람이 대답 만하는 것이 쉽게 그 질문에 어떤 종류의 응답 가장 쉬운 솔루션)
  • 아니에요 스크립트
  • 가()가 등록되어 있다고 가정 제출하기 전에 사용자가 로그인되어 있는지 만들기
  • 각 IP 주소가 N 시간마다 한 번만 전송되도록 양식을 제한하십시오.
+0

나는 세션과 IP 주소의 조합을 선호합니다. 그러나 여러 솔루션을 제공하는 경우 +1합니다. – Khez

0

는 보안 문자 당신이 쿠키를 설정하고 설정 여부를 확인할 수없는 경우 (그리고 아주 좋은 이유, 당신이 그것에 대해 생각해야한다)

를 같은 방지하는 매우 일반적인 방법입니다, 허용 메일을 보내거나 IP를 파일이나 데이터베이스에 기록하고 ip가 마지막으로 메일을 보낸 날짜를 확인하고 그 차이가 충분히 작 으면 메일을 보내지 못하게합니다.

+0

-1 그는 단지 그가 captcha를 구현할 수 있다는 것을 알고 있지만 그것을 원하지 않는다고 말했습니다. 이것은 주석으로 더 적합했습니다. – Khez

1

captcha를 피하려면 IP를 필터링하면 동일한 IP에서 최대 10 개의 메시지를 허용 할 수 있습니다.

누군가가 메시지를 보낼 때마다 ip를 저장하고 데이터베이스에 카운터를 증가시킵니다.

0

가장 쉬운 방법 중 하나는 양식 제출 (또는 렌더링)에 자바 스크립트 실행이 필요하도록하는 것입니다. NoScript가 설치되어있는 사람에게는 조금 반사회적이지만 자동 스크립트의 대부분은 스크립트를 처리 할 수 ​​없습니다.

+0

틀린 대답의 종류. 자동화 된 스크립트는 POST 요청을 페이지에 직접 보냅니다. JS는 폭탄 테러를 돕기 위해 아무 것도하지 않을 것입니다. – Khez

+0

올바른 POST URL을 얻는 유일한 방법은 일부 JS를 실행하는 것입니다. – regularfry

+0

새로 고침 할 때마다 게시 URL이 변경된다는 것은 끔찍한 일입니다. 합법적 인 사용자가 사용자가 액세스 할 수없는 솔루션에 오버 헤드를 추가합니다. – Khez

4

유효성 검사를 사용하지 않는 Akismet을 사용할 수 있습니다.

+1

+1 akismet은 순수한 사랑으로 만들어졌습니다 –

+0

이 문제에 대한 아주 좋은 해결책입니다. – daganh