2010-02-09 27 views
31

Tôi muốn thêm biểu mẫu Liên hệ đơn giản vào trang web của mình để khách hàng có thể liên hệ với tôi dễ dàng.Chống spam/Giảm thiểu - Biểu mẫu liên hệ?

<form> 
    NAME 
    <input type='text' name='name' /> 
    EMAIL 
    <input type='text' name='email' /> 
    MESSAGE 
    <textarea name='message' /> 
    <input type='submit' /> 
</form> 

Biểu mẫu này chỉ gửi email cho tôi thư của khách hàng.

Nhưng, tôi cũng muốn giảm (không, tôi không nói loại trừ nhưng ít nhất là giảm), SPAM.

Tôi đã xem xét sử dụng CAPTCHA nhưng cuối cùng, tôi không muốn cản trở khách hàng bằng cách điền thông tin bổ sung.

Bất kỳ ý tưởng nào về phương pháp giảm/giảm spam đơn giản mà tôi có thể sử dụng cho biểu mẫu Liên hệ của mình.

+1

Tôi nghĩ CAPTCHA là một ý tưởng hay, không phải là nhiều thông tin bổ sung. Cá nhân, tôi đã phát triển một hình thức liên lạc và tôi nhận được ít nhất 300 email mỗi ngày từ spambots, tôi rất tiếc khi không tích hợp một số chức năng CAPTCHA. –

+0

Xem thêm http://stackoverflow.com/questions/485106/how-do-i-protect-my-forum-against-spam để biết thêm một số ý tưởng. – Wim

+0

Ý tưởng tuyệt vời/bình luận trong [bài đăng StackOverflow này] (http://stackoverflow.com/questions/2387496/how-to-prevent-robots-from-automatically-filling-up-a-form). – Beepye

Trả lời

-2

Bạn chỉ có thể đăng nhập IP ($ _SERVER ['REMOTE_ADDR']) và cấm xác thực lại IP này trong 1 phút hoặc hơn, bắt đầu phiên, cung cấp ID không có khách truy cập và cấm xác thực lại 1 phút (hoặc nhiều hơn nhưng bot không thích chờ đợi).

+0

Bots thường không giữ cookie, do đó, điều phiên sẽ không hoạt động. Ngoài ra, hầu hết các chương trình chạy trên máy tính khách bị tấn công, dẫn đến nguồn cung cấp địa chỉ IP không bao giờ kết thúc. Tôi chưa bao giờ gặp vấn đề với một lượng lớn thư rác gửi từ một địa chỉ IP duy nhất, nó luôn luôn là sự tích lũy theo thời gian từ rất nhiều khách hàng khác nhau gây ra vấn đề ... – Wim

+0

Bạn đang phải Wim: nó chỉ là một thực hành tốt để tránh nhiều lần gửi. – Alysko

4

Sử dụng tài khoản thư Google hoặc Yahoo. Họ có bộ lọc chống SPAM tốt.

+0

Đây là một ý tưởng hay, gmail hỗ trợ chuyển tiếp tự động các email phải không? Điều này có thể hoạt động tốt. Có lẽ là việc thực hiện dễ dàng nhất và bạn có nguy cơ mất khách hàng tiềm năng do sự thất vọng captcha. – sam

+0

+1; hoặc bất kỳ bộ lọc spam hộp thư đến nào khác. Không có lý do gì để gây gánh nặng cho người dùng bằng CAPTCHA hoặc trình duyệt người dùng với các thủ thuật html. Đây là một vấn đề về hộp thư đến. – Tomas

+0

Nhưng nếu một trang web đang chạy theo nhiều bot, có một cơ hội để xuống trang web. Đó không phải là giải pháp để ngăn chặn thư rác bằng cách sử dụng yahoo hoặc gmail. Bạn phải giải quyết nó từ cuối trang web của bạn. –

6

Cách duy nhất (phía máy khách) khác với xác nhận người dùng loại CAPTCHA sẽ là viết toàn bộ động. Rất nhiều (nhưng không phải tất cả) robot có lẽ sẽ bỏ qua nội dung động. Ví dụ:

document.write("<"+"form>" 
    +" NAME " 
    +" <"+"input type='text' name='name' /> " 
    +"EMAIL " 
    +"<"+"input type='text' name='email' /> " 
    +"MESSAGE " 
    +"<"+"textarea name='message' /> " 
    +"<"+"input type='submit' /> " 
+"<\/form> "); 
+0

Điều đó thực sự hiệu quả? Điều đó có vẻ giống như một cách siêu đơn giản – BillK

+0

Tôi làm một điều rất giống nhau, nơi tôi chỉ cần thiết lập địa chỉ email động trên tải trang. Email không nằm trong một chuỗi, nghĩa là: "" của tôi "+" email @ "+ miền +".com "' –

+0

Tất cả các bot by-pass này. – Alysko

53

Một mẹo rất đơn giản, tôi đã sử dụng với tỷ lệ thành công đáng ngạc nhiên tốt là: Cung cấp một lĩnh vực văn bản được ẩn từ người dùng của con người với style="display: none", nhưng với một cái tên hấp dẫn như email. Hầu hết các bot sẽ điền vào một cái gì đó trong lĩnh vực này, nhưng con người không thể nhìn thấy nó để họ wont. Tại máy chủ, chỉ cần đảm bảo trường trống, khác xử lý việc gửi là spam.

+1

Ý tưởng tuyệt vời Một sự kết hợp giữa ý tưởng của bạn và Graza có thể chỉ là nó. – BillK

+5

Đây là một ý tưởng tuyệt vời! Ngoài ra, nếu bot đủ thông minh để bỏ qua các thẻ như vậy, hãy đặt 'display: none' động trong javascript và thêm nhận xét yêu cầu người dùng KHÔNG điền vào trường trong trường hợp javascript không thành công. – Graza

+3

Tôi thích ý tưởng này. CAPTCHAs là một cơn đau cổ. Phòng chống spam cần phải phát hiện bot, không chứng minh rằng người dùng là con người. –

-3

Bạn sẽ không cần phải giảm spam vì thư không được xuất bản trên trang web. Rất nhiều spam được đăng trên các diễn đàn và blog vì điều này sẽ tiếp cận được lượng khán giả và rô bốt lớn.

Đối với biểu mẫu liên hệ riêng tư, spam không hiệu quả, vì vậy bạn sẽ không phải lo lắng về số lượng lớn. Một vài thư rác mà bạn sẽ nhận được có thể được lọc một cách hiệu quả bằng bộ lọc spam trên hộp thư đến của bạn (ví dụ sử dụng gmail hoặc yahoo), đặc biệt là khi thư đến là văn bản thuần túy không có hình ảnh.

+0

Thật không may, điều này không đúng. Thế hệ chương trình spam hiện tại chỉ duyệt web và đăng lên * tất cả * biểu mẫu mà họ có thể tìm thấy. Họ không biết, và cũng không quan tâm, cho dù bài viết của họ thực sự làm cho nó vào một trang web hay không ... – Wim

+1

Tôi nhận được ít hơn 10 thư rác mỗi ngày cho một hình thức liên lạc cá nhân như vậy trên một trang web lớn. Nhưng ngay cả khi bạn sẽ nhận được hàng trăm, nó có vấn đề gì? Đó không phải là những gì chúng tôi có bộ lọc spam? Một giải pháp đầu vào như captcha hoặc các giải pháp khác được đăng tải là gánh nặng không cần thiết cho biểu mẫu liên hệ cá nhân. – Tomas

+0

Bộ lọc thư rác có thể trợ giúp trong trường hợp này, nhưng không phải lúc nào. Biểu mẫu web Drupal của tôi bao gồm quá nhiều đầu trang và chân trang giúp toàn bộ e-mail trông OK với bộ lọc, nó không đi theo lượng nội dung spam tương đối nhỏ ở giữa. – Wim

0

grep cho các phương thức URI, ký tự được mã hóa url hoặc hai ký tự đánh dấu HTML, có vẻ như hoạt động.

0

Sử dụng công nghệ JS. Giống như nếu người dùng đến trang liên hệ của bạn thì javascript sẽ tạo chuỗi hoặc bất kỳ thứ gì giống như bạn thích và đặt thông tin vào trường văn bản ẩn. Nhưng nó không phải là giải pháp thực tế, bot thông minh có thể dễ dàng crack nó.

Một cách khác là, Bạn cũng có thể sử dụng xác minh email sau khi gửi biểu mẫu liên hệ. Và lưu trữ dữ liệu trên cơ sở dữ liệu của bạn. Nếu khách hàng xác minh url thông qua email thì thông tin liên lạc sẽ được gửi đến bạn từ cơ sở dữ liệu.

Và cũng có thể sử dụng chậm trễ để ngăn chặn cuộc tấn công robot liên tục. Giống như sleep() trong mã PHP. Điều này sẽ làm tăng thêm một vài sự chậm trễ trong mã của bạn. Bằng cách này bạn có thể giảm các cuộc tấn công ngẫu nhiên nhưng đây không phải là phương pháp phòng ngừa.

4

Nếu bạn muốn thực hiện giải pháp hoàn thiện front-end, tôi đã thành công gần đây bằng cách để trống thuộc tính hành động biểu mẫu và điền nó thông qua hàm $.Hầu hết các spambot đều sử dụng một trình duyệt đã tắt javascript hoặc đang tìm kiếm các trường ẩn để tránh bị phát hiện.

Ví dụ:

html của bạn sẽ là:

<form method="POST" action="" id="contact-form"> 

và bất cứ nơi nào trong trang mà bạn có thể sử dụng để cư nó.

<script> 
     $(document).ready(function(){ 
       $("#contact-form").attr("action", "/yourMailScript.cgi"); 
     }); 
</script> 

Trình duyệt bot không javascript sẽ không nhận được mẫu hành động và họ sẽ nhận được 404 khi được gửi. Bất kỳ ai có trình duyệt thông thường (trừ khi họ đã tắt JS vì lý do hoang tưởng) sẽ có hành vi bình thường.

0

Tôi tìm thấy một ý tưởng tốt đẹp trên trang này:

http://www.evengrounds.com/developers/alternatives-to-captcha

Bạn có thể làm nút SUBMIT của bạn hiển thị một trang xác nhận, mà trên đó bạn giải thích cho người dùng rằng ông đã nhấn nút CONFIRM để thực sự Gửi tin nhắn. Spambots thường chỉ gửi biểu mẫu đầu tiên và bỏ qua bước thứ hai.

0

Bạn có thể thêm câu hỏi đơn giản, mỗi người nghiêm túc muốn liên lạc với bạn, có thể dễ dàng trả lời. Ví dụ: một trường mà anh ta nên nhập chữ cái đầu tiên của tên miền. Hầu hết các bot không hiểu câu hỏi và sẽ không nhập gì hoặc một cái gì đó ngẫu nhiên.

Bạn cũng có thể cố gắng theo dõi thời gian người dùng cần nhập dữ liệu. Nếu anh ta cố gửi biểu mẫu sớm hơn 5 giây trước khi nhập từ đầu tiên, đừng cho phép gửi nó đi. Bots thường chỉ phân tích các trang web, điền vào tất cả mọi thứ và sau đó gửi nó và đi đến trang web tiếp theo.

0

Sử dụng API chống spam như Akismet hoặc Cleantalk. Bạn có thể sử dụng các kiểm tra truyền thống cho các bot ít phức tạp hơn trước khi nhấn API. API chống spam là cách duy nhất để bắt spam do một người gửi.

Các vấn đề liên quan