控制试用订阅的访问权限

时间:2010-09-16 22:01:03

标签: php mysql security authentication

我的任务是建立一个系统,允许我们公司的某个人发送一封电子邮件,其中包含一个pdf文件的链接,该文件将保存在我们的网络服务器上。收件人可以点击链接查看我们通常销售的简报。这个想法是我们这样做了三个月,然后看看他们是否愿意继续并支付全额费用。

我已经建立了注册部分,但我正在尝试找到发送电子邮件的最佳解决方案。这就是我所想到的,但如果其他人有更好的东西,我感兴趣..

1)发送电子邮件时,生成附加到URL的通用代码。使用将遵循URL,它将检查我们的数据库中的“ok”条目并通过/失败它们访问。这似乎没问题,但链接可以传递或甚至加载到任何人都可以访问的公共站点。

2)为了扩展上述内容,我想也许我会有“一次点击”这样的事情,一旦我知道链接被点击,它就会过期,因此任何后续点击都会失败。缺点是,如果他们点击查看并关闭他们的窗口,他们就完成了。同样,如果他们点击并且他们的计算机在下载完成之前崩溃,他们也会被锁定。我不知道是否有办法(在我的PHP中)确认文件下载已经完成......

3)我可以将文件放在像/trials/201009/r@nDomstr1n6.pdf这样的目录中,文件上传,链接的名称是随机的,所以很难猜到。然后我可以使用.htaccess用不同的密码保护每个月的文件夹。这可能会变得乏味,并且对于最有可能的用户来说会很烦人。

我们不想强迫他们管理他们自己的密码b / c必须登录并记住另一个帐户可能会阻止参与。

感谢任何想法或指示。 d。

3 个答案:

答案 0 :(得分:1)

我会说每个电子邮件地址使用随机代码进行身份验证,并在5天后过期。如果您限制对首先访问url哈希的ip的访问权限,那么这可能会起作用,但可能会使合法用户/客户受到影响。

在任何情况下,如果需要,合法用户可以轻松申请新的身份验证代码。这样,即使您的任何一个限制给您的潜在客户带来不便,他们也不会对此感到沮丧。

最后,考虑一下如果他们喜欢pdf并希望分享它,他们可能会立即分享pdf本身,而不是打扰链接。

答案 1 :(得分:0)

首先,要意识到你可以在这里做到这么多。您允许用户下载PDF,之后他们可以随意使用(法律或其他方式)。因此,防止传递链接并不一定会阻止人们共享或发布PDF本身。

也就是说,如果你想让它变得更难一点,你可以对你的建议#2做一个变化,在你的建议#2之后你会在点击链接后到期之前产生某种延迟。您还可以限制链接为文件提供服务的次数。因为人们有各种各样的连接速度,而且因为我不知道你的PDF有多大,所以如果你选择使用它,我不能确定时间延迟应该是什么。

就像我说的那样,如果有人决定共享该文件,他们可以很容易地这样做。

答案 2 :(得分:0)

另一种可能性是,既然您已经知道了这些人的电子邮件地址,请在他们的电子邮件链接中为他们形成一个特定的URL。

因此,用户可以点击链接http://www.yourdomain.com/download_pdf.php?email=person@test.com

保留一张表格,其中包含电子邮件地址的以下数据。

ID EMAIL_ADDR read_date EXPIRE_DATE

当他们点击链接检查以查看他们之前是否已阅读过,如果他们已经检查过它没有过期。如果没有,请向他们提供pdf,如果它给了他们一个页面,上面写着“对不起,你的试用已经过期了...... /”/ p>

如果它们第一次点击它,那么设置read_date并计算到期日期并设置它。

或者可选地,您可以生成哈希或其他内容并使用哈希来标记用户而不是他们的电子邮件地址。

您还可以在表格中设置一个下载列,并在每次点击链接时通过递增下载列来阻止他们下载二十多次。