Php 防止在调查网站上多次注册 上下文

Php 防止在调查网站上多次注册 上下文,php,security,user-registration,Php,Security,User Registration,我正在开发一个调查网站,任何人都可以投票一次。显然,为了保持调查的相关性,我必须防止多次注册。我强迫每个用户使用他们的Google、Facebook或Twitter帐户登录。但是,如果他们在每个平台上都有一个帐户,他们可以进行3次身份验证,或者在同一平台上使用多个帐户进行身份验证(我在谷歌上有3个帐户)。所以我想存储他们的IP地址,但他们仍然可以使用代理。我可以保留HTTP用户代理,尽管他们仍然可以更改浏览器。我可以用正则表达式提取操作系统,改变操作系统比浏览器更简单。还有地理定位,例如,使用

我正在开发一个调查网站,任何人都可以投票一次。显然,为了保持调查的相关性,我必须防止多次注册。我强迫每个用户使用他们的Google、Facebook或Twitter帐户登录。但是,如果他们在每个平台上都有一个帐户,他们可以进行3次身份验证,或者在同一平台上使用多个帐户进行身份验证(我在谷歌上有3个帐户)。所以我想存储他们的IP地址,但他们仍然可以使用代理。我可以保留HTTP用户代理,尽管他们仍然可以更改浏览器。我可以用正则表达式提取操作系统,改变操作系统比浏览器更简单。还有地理定位,例如,使用

问题
  • 如何防止多次注册?可以做什么样的测试
  • 如何嵌入这些测试?按什么顺序执行
  • 您是否已经部署了此类解决方案

确保绝对安全的唯一方法是使用能够唯一识别一个人的东西,例如序列号(社会安全号)或硬件标识符(RSA密钥)。第二个最好的办法是需要一张信用卡,因为它通常能识别名字和姓氏。所有其他尝试都很容易被破坏(即使用电话号码、地理位置等进行两阶段身份验证)。浏览器发送的标题很容易被欺骗(地理位置、IP地址、用户代理都是标题),正如您所提到的,创建多个Google/Twitter帐户非常容易。

您提到的这些测试可以帮助阻止一些用户多次注册,但是,如果一个有决心的用户真的愿意,他们将能够绕过这些措施

他们可以用Google、FB或Twitter创建多个帐户,用浏览器插件轻松欺骗他们的用户代理,正如你所说的,隐藏在大量代理背后,这些代理也可以击败地理定位


您可以做的另一件事是添加代理检测,并尝试阻止注册/投票,如果您认为他们在代理背后。

如何要求域(或TLD,如.gov?)提供一个有效的电子邮件地址,该域只授予每个物理人一个电子邮件地址


这里只是提出一个建议,如果你必须允许任何人投票,这可能是不可行的。

你可以通过手机发送带有代码的短信来验证用户。这将把计票限制为用户拥有的手机号码

你很可能不得不做出一些妥协。100%确定你的用户是不同的人几乎是不可能的。一个合理的方法是使用类似的服务,并要求您的用户提供一个唯一的电话号码,您的网站可以通过简单的电话确认


您可能还希望不方便使用多个帐户。在您的情况下,您可以在投票过程中使用验证码,以便自动系统无法输入投票。这样,即使有人有10个或50个电话号码,他们也必须付出巨大的努力来有意义地更改您的结果。

首先,您需要以某种方式唯一地识别用户。你提到的一些事情是:

  • 电子邮件地址
  • IP地址
  • HTTP用户代理
  • 以上所有内容都很容易被欺骗:

  • 可以创建多个邮件帐户
  • 代理。有人试图找出某个人是否支持某个代理,但你找不到拥有可用精英代理的用户。另一个问题是,可能有多个用户共享一个IP
  • 用户代理信息可以更改
  • 唯一标识用户的是SSN。问题是,由于网络上有多台发电机,因此它很容易被伪造

    问题是很难证实一个人是否就是他或她所声称的那个人。解决方案是让用户尽可能难以进行多次投票(如果单次投票并不重要的话)


    这可以通过使用例如SMS验证来解决。用户很难/不方便通过几个电话号码使用

    首先,我只允许在网站上注册一封电子邮件

    然后你应该考虑允许每个IP进行一次投票。这可能是不可行的,因为它显然会阻止路由器背后的潜在选民

    您可以检查每个投票者的用户代理,以尝试找出差异

    尽管您可能无法完全验证用户服务器端,但本质上应该检查用户特有的任何内容


    正如已经提出的那样,使用电话号码也是减少垃圾邮件投票者的另一种方式。

    要求用户通过电话登录帐户似乎是防止批量注册的一种非常常见的方式。有几家公司提供这些服务

    类似的:陷阱:IP地址可以将一个房屋持有限制为一次注册。虽然几乎不可能防止一个有决心的人破坏你的调查,但你仍然可以让他们做得稍微困难一些。通过应用您提到的所有技术,您将过滤掉许多rif raf。还考虑使用cookie来标记计算机“已经投票”。PHP、Javascript和Flash都负担得起。很少有人知道如何删除flash Cookie,因此它们可能特别合适。但是请注意,有时整个家庭都会使用同一台计算机,从而拒绝有效的投票者。购买多个硬件标识符也很容易,验证SSN也很难。是的,除非您发布硬件标识符并跟踪每个用户。我同意这通常不是你想采取的方法。我不知道。但想法很简单:找到短信网关(网上有很多),向用户询问电话号码,向该号码发送带有代码的短信,要求用户输入代码。问题是这个过程有点长。用户刚登陆网站