我们在网站上有一个表格,访问者必须提交他们的电子邮件地址 然后我们通过下载链接向该地址发送电子邮件 这个想法是阻止人们共享链接,而是要求他们输入他们的电子邮件地址。
我能想到的是当用户提交表单并在处理下载链接时检查该cookie时设置cookie。
这有两个缺点,相同的用户无法从不同的设备下载相同的文件,并且鉴于用户选择删除他们的cookie的情况,他们不再能够下载该文件。
更好的解决方案? (这并不要求访问者使用任何登录名或密码)
注意:
我认为这是一个糟糕的营销策略,但它是客户的要求
人们创建免费的电子邮件帐户只是为了获取文件,或者他们可以共享文件本身超出了这个任务的范围,所以基本上我们不关心那些posibilites,因为我们无法做到关于那一切。
答案 0 :(得分:1)
在这种情况下,我会发送带有邮件本身的用户链接或一些生成的令牌作为GET参数(例如http://my-site.com/download?mail=a@a.a)。然后用户打开邮件,并且很可能在共享之前访问此链接。因此,我们可以保存HTTP的“Referer”标题,并且对于所有进一步的访问都需要完全相同的“Referer”。因为每个邮件提供商的“Referer”相同(例如,Gmail会打开http://google.com?q=http://a.com之类的链接,然后会打开http://a.com,而“Referer”将始终等于“http://google.com?q=http://a.com”,并且因为这种机制也适用于Gmail / Inbox本机应用程序,并且对于大多数提供商来说,即使在不同的设备上也是如此。
有4个问题:
您可以通过添加过滤和分类用户代理来解决第4个问题。例如,假设普通用户不超过1台Mac,1台Win PC,1台Linux PC,1台iPhone,1台Android。在这些设备上,他有不同的浏览器,因此我们必须区分OS X Safari,OS X Chrome,OS X Firefox,Win Safari,Win Chrome,Win Firefox等。如果您收到不合适的“Referer”请求,但是使用者 - 来自未填充类别的代理,将其视为合法请求。
现在第4个问题已解决,2个拥有相同操作系统浏览器系列的用户无法共享链接。但问题是: