2008-09-11 23 views
12

Tôi đang làm việc trên một cuộc thi dựa trên web được cho phép cho phép người dùng ẩn danh bỏ phiếu, nhưng chúng tôi muốn ngăn họ bỏ phiếu nhiều lần. Giới hạn dựa trên IP có thể được bỏ qua với proxy ẩn danh, người dùng có thể xóa cookie, v.v. Có thể sử dụng ứng dụng Silverlight, có quyền truy cập vào bộ nhớ bị cô lập nhưng người dùng vẫn có thể xóa.Có cách nào đáng tin cậy để ngăn chặn gian lận trong cuộc thi dựa trên web mà người dùng ẩn danh có thể bỏ phiếu không?

Tôi không nghĩ rằng nó có thể làm điều này mà không có một số joker bỏ phiếu cho mình lên với một bot hoặc một cái gì đó. Có một ý tưởng?

Trả lời

19

Câu trả lời ngắn gọn là: không.Câu trả lời dài hơn là: nhưng bạn có thể làm cho nó tùy ý khó khăn. Những gì tôi sẽ làm:

  • Bỏ phiếu yêu cầu giải quyết hình ảnh xác thực (để tránh bỏ phiếu tự động nhiều nhất có thể). Để có hiệu quả hơn, tôi khuyên bạn nên chuẩn bị nhiều loại captchas đơn giản (như "chọn ảnh bằng mèo", "2 + 2", "nhập từ", v.v.) và xoay chúng theo thời gian trong ngày và theo IP, sẽ làm cho hệ thống tự động không hiệu quả (ví dụ nếu ai đó sử dụng IP A tạo bot để giải mã captcha, điều này sẽ trở thành vô dụng vào ngày hôm sau hoặc nếu phân phối nó trên máy tính khác/proxy sử dụng)
  • Khi lọc theo IP, bạn nên cẩn thận xem xét các tình huống mà nhiều máy chủ đứng sau một IP công cộng (AFAIK AOL ủy quyền tất cả khách hàng của họ thông qua một vài IP - vì vậy giới hạn này sẽ cấm người dùng AOL hiệu quả). Ngoài ra, nhiều proxy gửi cùng các tiêu đề trỏ tới IP ban đầu (như X-Forwarded-For), vì vậy bạn cũng có thể xem xét nó.
  • Cuối cùng, sử dụng một cái gì đó như FSO (Flash Shared Objects - "Cookie Flash") là đủ che khuất cho 99,99% số người không biết. Silverlight thậm chí còn mơ hồ hơn. Để trở thành thậm chí sneakier, bạn có thể mua một tên miền khác và thiết lập FSO từ tên miền đó (vì vậy, nếu người dùng đang tìm kiếm bộ FSO bằng tên miền của bạn, họ sẽ không thấy bất kỳ)

Không ai trong số những phương pháp là 100%, nhưng hy vọng kết hợp họ cung cấp cho bạn mức độ bảo đảm bạn cần. Nếu bạn muốn nâng cấp này lên cấp cao hơn, bạn cần phải thêm một số loại đăng ký người dùng (có thể đơn giản như yêu cầu địa chỉ email hợp lệ khi phiếu bầu xuất hiện và gửi liên kết xác nhận đến địa chỉ đã cho và không tính phiếu mà liên kết không được nhấp vào - vì vậy nó không cần phải là một chính thức "tạo một tài khoản với tên người dùng/mật khẩu/tên linh sam/tên cuối cùng/etc").

0

Không, đó là máy tính của người dùng và họ có quyền kiểm soát. Thật không may là giải pháp duy nhất là đưa nó trở lại tòa án của bạn để nói và yêu cầu xác thực.

Tuy nhiên, CAPTCHA giúp hạn chế số phiếu bầu cho người dùng ít nhất.

Dĩ nhiên ngay cả với xác thực bạn không thể thực thi bỏ phiếu duy nhất bởi vì sau đó họ dạy các chương trình để đăng ký ...

0

Bạn chắc chắn có thể làm cho nó khó khăn.

Điều gì về việc xây dựng hồ sơ người dùng với những thứ như địa chỉ ip, useragent trình duyệt, tên máy và bất kỳ thông tin nào khác mà bạn có thể nhận được.

Lưu trữ hồ sơ cho mỗi người dùng, sau đó nếu bạn nhận được một hồ sơ tương tự với hồ sơ đã có trong cơ sở dữ liệu (bạn sẽ phải tinh chỉnh điều đó), bạn có thể bỏ phiếu đó.

Tôi tưởng tượng bạn có thể tạo hồ sơ tốt hơn bằng cách sử dụng Silverlight, mặc dù tôi không chắc chắn thông tin nào cung cấp cho bạn quyền truy cập.

0

Giải pháp phía máy khách là vì những lý do bạn liệt kê - chúng có thể được người dùng thao tác. Các giải pháp phía máy chủ - như bạn đã nói - có thể bị lừa và bỏ qua.

Nếu bạn sẵn sàng chấp nhận thực tế là bạn không thể chắc chắn 100% rằng bạn đang nhận được một phiếu bầu cho mỗi người, thì có một số biện pháp bạn có thể thực hiện để giảm tiếng ồn.

  • Sử dụng CAPTCHA trong biểu mẫu phiếu bầu của bạn để làm cho chương trình và tập lệnh khó hơn.
  • Giới hạn số phiếu bầu cho mỗi địa chỉ IP thành một.
  • Cân nhắc yêu cầu đăng ký để bỏ phiếu. (Tôi biết điều này đánh bại một phần câu hỏi ban đầu của bạn, nhưng nó mang lại cho bạn một mức độ kiểm soát lớn hơn đối với việc bỏ phiếu.)

Đó là một khởi đầu tốt.

0

kinh nghiệm cá nhân của tôi trong cuộc thi phát triển và giám sát nói với tôi rằng không có, không có cách nào đáng tin cậy để tránh gian lận nếu bạn cho phép người dùng ẩn danh bỏ phiếu (hoặc làm gì đó cho phép họ tham gia vào các cuộc thi).

bạn có thể chơi với IP, giới thiệu sự chậm trễ giữa hành động và tiếp theo, nhưng thực sự khó khăn: cách tốt nhất là giới thiệu hình ảnh xác thực hoặc tương tự, nếu có trong trường hợp cụ thể của bạn.

tốt nhất của tất cả, không cho phép người dùng ẩn danh tham gia: để họ "chơi" và tiếp cận với một mô phỏng, nhưng cuộc thi cần đăng nhập.

1

Không, bạn không thể và chỉ mất một người và một diễn đàn sẵn sàng để change the outcome of an online vote.

Bạn phải nhận ra những sai sót vốn có của một cuộc bỏ phiếu trực tuyến và thay vì cố gắng để có được xung quanh họ cố gắng sử dụng chúng để lợi thế của bạn.

-Adam

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