如何阻止用户分享我的网络应用程序的登录详细信息

时间:2010-12-28 09:14:44

标签: database security session login guard

到目前为止我所拥有的:

  1. 服务器端会话
  2. Request.ServerVariables(“HTTP_USER_AGENT”)创建的计算机的唯一ID(md5)& REMOTE_HOST 并保存在数据库中
  3. 但在这种情况下我还能做些什么呢?用户继续分享他们的登录详细信息:(

9 个答案:

答案 0 :(得分:4)

这几乎是任何工作中的问题:从软件,有人可以简单地复制程序,到简单的票务,以及单独走过票务柜台。 (我在售票处工作过,我们确实有人没有付钱就进去了。)这在很大程度上是一个社会问题,而不是一个计算问题,而且我的经验是尝试用计算机修复社会问题(人)徒劳的。以下是我在这个主题上所听到的内容的高潮,以及建议往往涉及的两个类别:

尝试控制问题。

尝试以某种方式识别和控制系统的不道德用户。这可以是软件的DRM,也可以是售票台示例中的保安。这基本上就是你现在正在尝试的。

我用当前方法看到的一个问题是它不支持多个浏览器。我经常浏览多个浏览器,并从多个网站浏览。如果这是识​​别您的服务被盗的方法,您确定没有看到误报吗?

如果您确实尝试控制问题,我听到的最好的事情是确保您不会合法地使用系统影响用户。通过让他在他的机器上安装DRM软件,或者要求他脱鞋去上飞机,给合法用户带来痛苦,只会给他造成麻烦并降低他眼中服务的质量。尝试找到识别麻烦用户而不影响正常人群的方法:在Web服务的情况下,选择黑名单(禁止)IP地址可能会有效。 (维基百科用这种方式控制垃圾邮件发送者和恶意编辑者,有些人用这种方式控制垃圾邮件。)

现在,另一条推理路线:

忽略此问题。

这源于“不要以用户的方式”理想。让您的服务尽可能地为用户服务,并为他提供高质量的服务,他不会介意与他的现金分开。换句话说,让它值得他的钱。当然,这取决于足够的人是否诚实,你仍然有利可图。有些人认为,偷窃服务的人往往不会为此付出代价。

实际上,两者的某些组合可能是最有效的措施。

答案 1 :(得分:2)

第二个不起作用。我从至少五个不同的设备登录。您绝对不希望自己融入客户的硬件和软件升级周期

答案 2 :(得分:2)

获取用户的手机号码,并在每次尝试登录时使用一次性密码发送短信。电子邮件不起作用,因为它太容易分享。 但你可以看到你的用户数量大幅减少:这件事真的很烦人。

答案 3 :(得分:1)

记录数据库表中的IP地址,时间和用户名。检查数据库中是否有网站上多个IP处于活动状态的用户,并禁止这些用户。

或者,如果服务器上已存在该用户的会话,则阻止用户登录帐户。

答案 4 :(得分:1)

我阻止用户共享帐户信息的方法是阻止来自一个位置的多次登录。因此,如果用户登录,它将注销所有其他会话。

这相对容易。将数据库中的每个用户与登录时随机生成的session_key等字段相关联。将session_key存储在数据库中并存储在用户浏览器的cookie中,并检查会话密钥是否匹配。如果没有,请将用户注销。每当有其他人登录时,它都会生成一个新的会话密钥,从而停用所有先前的会话并注销用户。您还可以尝试跟踪其他信息,例如与会话关联的用户IP地址等。它并非100%万无一失,但它阻止了大多数用户共享帐户。

答案 5 :(得分:0)

无法阻止这一点。你只能让它变得更加困难 - 但你应该考虑下方:合法用户陷入交火之中。如果我是你,我只是解决问题的根源 - 你不希望人们共享登录的原因 - 而是修复它。激励来做这件事。消除这样做的好处。

答案 6 :(得分:0)

阻止用户分享内容的唯一方法是使某些内容不可分享(至少不会出现严重的黑客行为)。但这涉及的硬件可能不适合您的项目。我在谈论硬件cryptotokens,它拥有私钥,不要让他们复制它们。如果您向用户提供内部私钥的令牌,则用户可以将令牌本身传递给其他人,但他无法复制它。

答案 7 :(得分:0)

这很简单。在注册过程中使用10到15个最喜欢的问题及其答案。每次登录时随机询问其中一个。

答案 8 :(得分:-1)

现在,我认为这是几个因素的组合,即使不是所有的因素都能起作用

  1. 降低订阅费用

  2. 同时防止多个会话

  3. 使用两个因素进行身份验证

  4. 如果应用程序禁用了屏幕截图...在单个页面上添加了太多内容,以至于让人不愿向下滚动屏幕截图。.如果可能,请禁用屏幕录制...权限

  5. 我认为与设备ID结合使用指纹扫描和面部识别可以工作

  6. 最后考虑将您的网站加载到基于webview的Android用户应用中