2009-02-07 10 views
6

Tôi đang cố thực hiện cuộc thăm dò ý kiến ​​của ASP.NET (C#) để hỏi người dùng câu hỏi Có/Không và đăng nhập vào cơ sở dữ liệu . Để ngăn chặn spam, tôi muốn có thể đảm bảo rằng người dùng chỉ có thể bỏ phiếu một lần. Tôi đã nghĩ về việc đăng nhập địa chỉ IP của người dùng. Nếu đây là câu trả lời, ai đó có thể cho tôi một hướng dẫn cho thấy làm thế nào điều này có thể được thực hiện. Nếu đây không phải là câu trả lời thì hãy cho tôi đề xuất của bạn.Cách đảm bảo người dùng chỉ có thể bỏ phiếu một lần trong cuộc thăm dò ý kiến ​​của ASP.NET

Chỉnh sửa: Tôi không yêu cầu người dùng đăng ký vì đây không phải là trang web của tôi.

+0

Điều này sẽ tốt hơn như một câu hỏi không có ngôn ngữ. :) – skiphoppy

+0

Tôi chỉ sử dụng ASP.NET và C#. Tôi không biết bất kỳ ngôn ngữ nào khác ngoại trừ C++ không hoạt động cho các trang web. Oh và một số JavaScript rất cơ bản. – Kredns

Trả lời

2

Logged trong phiên là cách duy nhất để ngăn chặn gian lận đúp bỏ phiếu nhưng kể từ khi bạn rõ ràng yêu cầu cho một cách để đăng nhập vào địa chỉ IP, bạn có thể nhận được ở đó thông qua:

HttpContext.Current.Request.UserHostAddress;

hoặc

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

Phải đủ dễ dàng để lưu vào DB và kiểm tra xem IP có tồn tại trên mỗi cuộc thăm dò hay không.

+0

Đó là kinda những gì tôi đang tìm kiếm. – Kredns

+0

Mặc dù điều đó giúp bạn có được một địa chỉ IP, nhưng nó không phải là một chỉ báo đặc biệt tốt cho việc bỏ phiếu (như tôi và những người khác đã đề cập) –

+0

@Mitch Wheat, Đây là thực hành tiêu chuẩn. Nó không phải là bằng chứng đánh lừa, nhưng đây là cách tiếp cận được chấp nhận của vấn đề. Các bộ phân tích tính số UU dựa trên giống nhau. Nếu bạn có bất kỳ đề xuất ngắn của việc người dùng đăng ký như câu trả lời của bạn cho thấy, tôi muốn nghe về nó. – aleemb

11

Bạn chỉ có thể nhận được rằng mỗi người dùng có một phiếu bầu nếu bạn có thể xác thực người dùng. Vì vậy, bạn sẽ cần một cơ chế xác thực, điều này sẽ cho phép bạn ngăn người dùng đăng ký nhiều tài khoản.

Tôi chỉ có thể xem tác phẩm này trong môi trường mà người dùng đã đầu tư nội dung nào đó vào tài khoản của mình, như người đăng ký báo trực tuyến hoặc hệ thống danh tiếng như trên StackOverflow.

+0

Đây không phải là giải pháp thiết thực. Nó không có ứng dụng bên ngoài các cộng đồng khép kín. Quá trình đăng ký sẽ chỉ cản trở các phiếu bầu khiến phương pháp này phản tác dụng. – aleemb

4

Nếu bạn có danh sách người dùng đã đăng ký, hãy gửi email chứa liên kết duy nhất được tạo có chứa guid (ví dụ), ghi GUID trong cơ sở dữ liệu và khớp với biểu quyết.

Nếu bạn đang nói về khả năng truy cập công cộng và bảo mật, thì địa chỉ IP của chính nó là không đủ (bỏ phiếu bầu cử điện tử trên google cho nhiều vấn đề liên quan đến bỏ phiếu công khai an toàn).

Bạn có nghĩ đến việc sử dụng một trong các dịch vụ bỏ phiếu miễn phí không?

Condorcet Internet Voting Service

3

địa chỉ IP sẽ không làm việc cho hàng triệu người đang làm việc sau một proxy là tốt.

Cookie là giải pháp một phần, nhưng rô bốt biểu quyết không thể gửi cookie.

1

Có đăng ký yêu cầu xác nhận đăng ký email và đảm bảo địa chỉ email là cột duy nhất trong DB giữa những người dùng của bạn. Sau đó buộc phiếu bầu vào địa chỉ email. Nó sẽ không hoàn toàn ngăn chặn một con rối sock người có nhiều địa chỉ email nhưng nó sẽ ít nhất làm cho nó không có giá trị nỗ lực nhiều nhất.

+0

Tốt hơn để tạo số duy nhất (GUID) cho mỗi phiếu bầu một lần của người dùng ... –

4

Bạn không thể giới hạn một phiếu bầu cho một địa chỉ IP. Địa chỉ IP không bằng một người dùng. Địa chỉ IP đại diện cho một hoặc nhiều người dùng.

0

Kết hợp IP và useragent có thể cung cấp cho bạn giải pháp hợp lý.

0

Tôi đồng ý rằng một địa chỉ IP duy nhất không tương ứng với một người dùng duy nhất nhưng tôi nghĩ đó là cách an toàn nhất để duy trì một phiếu bầu cho mỗi người. Tôi thường sử dụng cookie để theo dõi những người đã bỏ phiếu. Tất nhiên, đây là một hack dễ dàng, nơi bạn có thể chỉ cần xóa các tập tin cookie và sau đó bỏ phiếu một lần nữa.Nếu bỏ phiếu chỉ là một số thứ ngẫu nhiên thì tôi không thực sự quan tâm. Nếu phiếu bầu chính xác thực sự quan trọng đối với ứng dụng của bạn thì hãy sử dụng địa chỉ IP.