원본글 : 5 Ways of Battling Form Spam
만약 여러분이 웹 어플리케이션을 만든다면, 스팸 봇들에게 점렴당하는 것들을 막을순 없을것입니다.
내 프로젝트 중 하나는 회원가입 폼 부분을 당해서 17,000여개의 가짜 유저을 정리하는 것은 정말 힘들었습니다.
이를 해결 하기위해 스팸 봇과 싸우는 방법을 트위터에 물어보았고, 많은 반응과 좋은 아이디어들을 얻을 수 있었습니다.
나는 언급된 방법들을 공유해 만약 여러분이 공격 당했을 때 어떻게 방어해야하는지 알게 될 수 있을 것입니다.
1. Cloudflare
만약 여러분이 클라우드플레어와 같은 서비스를 사용하고 있으면, “page rules”을 설정해 URL과 양식 제출을 중단 할 수 있습니다.
다만, 나는 잘 다른 방법들 처럼 잘 작동 하지 않을 것 이라고 생각합니다.
하지만, 이 방법은 이미 운영중인 서비스에 어떠한 영향도 없이 신속하게 구현이 가능합니다.
2. Honeypot
허니팟은 최우선 방어 방법이고 설치 또한 간단합니다.
폼 안에 아무런 값이 없는 hidden 타입에 input 태그를 두고, 만약 hidden 필드 안에 값과 함께 제출 된다면, 거의 봇일 것이다.
직접 이를 구현 할 수 있지만, spatie/laravel-honeypot과 같은 패키지가 조내하여 손쉽게 통합된 환경에서 구현 할 수 있습니다
‘name’이라는 input필드가 있다면 봇은 그 필드를 체워야 하는 필드로 생각한다는 것을 기억하시기 바랍니다.
3. Validate Emails(이메일 인증)
만약 이메일을 요구하는 양식이라면, 사용자 이메일로 메일을 보내어 이메일 안에 있는 버튼을 클릭하여 진짜인지 확인 할 수 있습니다.
이 방법은 Laravel Newsletter를 포함해 많은 뉴스레터가 사용하는 방식입니다.
사용자는 이메일을 입력하고, 우리의 서비스는 이메일을 보내면, 사용자는 승인버튼을 눌러 우리의 서비스에 가입 할 수 있다.
이렇게 하면 가입되는 유저는 봇이 아니라 실제 사용자들일 것 입니다.
다른 방법으론 API를 통해 이메을 확인해주는 identibyte와 같은 서비스를 사용하는 방법입니다.
이런 방법을 통해 사용자들은 추가적인 단계없이 가입 할 수 있습니다.
4. Capcha
이 방법은 제가 가장 좋아하는 방법입니다. 왜냐하면, 내가 캡차를 싫어하기 때문입니다.
Google가 가지고 있는 invisible reCaptcha는 아마 제일 좋은 캡차 옵션일 것입니다.
5. Dedicated Spam Services (스팸 차단 서비스)
두 가지의 유명한 스팸 서비스인 Akismet와 Stop Forum Spam이 있습니다.
Akismet은 유료이고 Stop Forum Spam은 무료 입니다.
나는 Akismet 모든 워드프레스 사이트에 사용했습니다. 하지만, 워드프레스가 아닌 라라벨에서도 사용할 수 있습니다.
여러분은 들은 Akismet의 API를 사용하거나 nickurt/laravel-akismet과 같은 것을 사용하면 됩니다.
Stop Forum Spam은 무료 서비스 이며, Akismet와 유사합니다.
그리고 라라벨 페키지 nickurt/laravel-stopforumspam가 존재하며, 통합 적으로 사용할 수 있게 도움을 줍니다.
모든 옵션들은 honeypot을 해본 후 부터 사용하는것이 좋습니다.
만약 honeypot이 실패하면 봇이 공격을 막을때 까지 다른 옵션들을 사용하세요.
다만, 오늘 동작하는것이 내일엔 안할수도 있다는 것을 기억하고, 매일 봇들과 싸워야 한다는것을 잊지 마세요.