2012-11-24 3 views
9

Tôi là người sáng lập ra một 'toplist' lớn, được gọi là. Người dùng có thể gửi trang web của họ đến nhà duy nhất và đạt được vị trí cao hơn bằng cách lấy phiếu bầu cho mục nhập của họ.Xác định một khách truy cập duy nhất, cách nâng cao? (PHP/Java)

Khách truy cập trung bình là trẻ, chủ yếu là từ 13-20 tuổi. Họ mang lại lợi ích, nhưng cũng bất lợi. Trong 5 năm qua, tôi đã tích cực chiến đấu với 'các nhà hát' đang sử dụng robot để có được phiếu bầu. Những rô bốt này sử dụng proxy, các tác nhân người dùng khác nhau và thậm chí còn quản lý nhiều loại câu hỏi CAPTCHA (reCAPTCHA, SolveMedia và captcha tùy chỉnh). Việc sử dụng các robot này đã giảm đáng kể kể từ khi tôi giới thiệu một hệ thống mới tạo bố cục ngẫu nhiên và tải 1 trong số 15 hệ thống CAPTCHA khác nhau mỗi lần tải trang. Nó không có vẻ là một vấn đề nữa.

Mọi người hiện đã chuyển sang gian lận thủ công. Họ đang sử dụng plugin trình duyệt thay đổi địa chỉ IP của họ trên mỗi tải trang khá nhiều (ví dụ: https://addons.mozilla.org/en-us/firefox/addon/ipflood/). Tôi thực sự dường như không thể tìm cách để chống lại điều này, nhưng đó là một vấn đề rất lớn. Thật khó tin, nhưng những đứa trẻ này thậm chí còn tự giải quyết 5000 câu hỏi xác thực, đó là thời gian.

Câu hỏi của tôi là, ai cũng có thể giúp tôi nghĩ ra cách giải quyết vấn đề này? Tôi đã sử dụng cookie và cài đặt phiên, nhưng họ đã bắt đầu chú ý và xóa chúng. Tôi sẽ giới thiệu tài khoản người dùng và làm cho nó thú vị hơn để bỏ phiếu thông qua một tài khoản, nhưng tôi không muốn yêu cầu tài khoản. Tôi nghi ngờ có, nhưng có cách nào khác còn lại để chống lại gian lận (có thể giống như một ứng dụng web Java né tránh proxy cài đặt trình duyệt và chuyển IP thực đến trang, nếu có thể?)? Hoặc tôi có nên bỏ cuộc và thuê người để kiểm tra hàng ngày để xem liệu trang web có thể đạt được nhiều phiếu bầu không?

+0

Nếu có, sẽ có cách. Làm cho cử tri của bạn đăng nhập và cũng lưu trữ ở đó ip họ đăng nhập nếu nó thay đổi 5k lần mỗi ngày bạn biết cũng đặt thẻ CSRF cho mọi phiếu bầu, trong phiên và trong cookie, phát hiện bot bằng cách kiểm tra xem họ cũng tải xuống nội dung như hình ảnh, css. –

+0

Tôi chỉ nhận ra rằng tôi quên đề cập đến việc bỏ phiếu chỉ có thể mỗi 24 giờ một lần. Tôi không muốn yêu cầu đăng nhập người dùng, tôi nghi ngờ có một triệu người sẵn sàng tạo một tài khoản, phần lớn sẽ ngừng sử dụng trang web của tôi. Tôi đang làm cho nó thú vị hơn để sử dụng một tài khoản mặc dù, như loại bỏ thời gian chờ đợi và captcha. Họ có vẻ thích nó. Giới hạn 1 phiếu bầu trong 24 giờ thật dễ dàng vì tôi có thể kiểm tra tên người dùng thay vì IP. – Jason

+1

Câu hỏi thực sự thú vị. –

Trả lời

5

Tôi khuyên bạn nên triển khai một số loại cơ chế tin cậy IP, bởi vì địa chỉ IP được sử dụng bởi proxy mở thường được sử dụng cho những thứ bất hợp pháp.
Vì vậy, nhiều người trong số những địa chỉ này bị bắt bởi honeypots và được danh sách đen bởi một số tổ chức. Hãy xem xét honeypotproject ví dụ:
https://www.projecthoneypot.org/
Đó là một cơ sở dữ liệu khổng lồ và có thể dễ dàng triển khai trong PHP bằng cách sử dụng chức năng tra cứu DNS. cũng
http://www.stopforumspam.com/
là khá tốt và cung cấp giao diện REST nếu tôi nhớ chính xác.
Bên cạnh đó có hàng trăm DNSBLs rằng danh sách đen các loại hoạt động, có một cái nhìn tại một số proxy-dnsbls:
http://spamlinks.net/filter-dnsbl-lists.htm hoặc http://dnsbl.tornevall.org/ hoặc http://www.sorbs.net/

Cuối cùng nhưng không kém phần quan bạn có thể sử dụng phương pháp PHP phổ biến cho proxy chặn (cái đơn giản nhất cần kiểm tra cho tiêu đề HTTP-X-Forwarded, không phải tất cả proxy đều cung cấp nó)
Tiếp tục đọc tại đây: https://meta.wikimedia.org/wiki/Proxy_blocking hoặc tại đây: Detect clients with Proxy Servers via PHP

+0

Các liên kết đó thực sự hữu ích, cảm ơn bạn!Tôi vừa xem xét một số địa chỉ IP đã bỏ phiếu cho các mục đáng ngờ, và tôi đã phát hiện ra rất ít được biết đến như là proxy trong honeypotproject. Tôi sẽ xem xét các cơ sở dữ liệu đó, có vẻ như là một phương pháp tuyệt vời đối với tôi. – Jason