繁体   English   中英

如何检查来自用户收件箱的网页请求

[英]How to check a web page request came from user inbox

我有一个简单的问题。 如果有人能回答我,我非常感谢。 我有一个 Web 应用程序,它向订阅者发送下载链接。 订阅者可以从他们的收件箱中点击链接并获得下载 pdf 文档的权限。 这很好,但我想要的是仅当仅从他的收件箱单击链接时才允许访问 pdf 文档。 我的意思是,如果订阅者将此电子邮件转发给其他人或尝试手动将链接粘贴到浏览器中,则它应该不起作用。 提前致谢。

您想要的是不可能的。

考虑这种情况:您通过电子邮件发送某人@ example.com。 他们可以通过以下方式查看电子邮件:

a)桌面邮件客户端
b)智能手机/平板电脑邮件客户端
c)网络邮件

这三者对您的服务器的显示将完全不同,具体取决于他们在哪个客户端单击了您的链接。如果用户将电子邮件转发给其他人(例如otherperson@example.com ,则该人的链接完全相同邮件文件,他们可以通过完全相同的选项进行查看。

也许能够从中提取是指一个用户名或某些其他个人身份数据, 如果他们使用网络邮件和网络邮件系统是愚蠢到有webmail.example.com/readmail?userid=someone

但是否则,不能,您不能假设有关传入点击的任何信息,只能假设有人单击了某些电子邮件中的链接。

无法判断是从电子邮件客户端打开链接还是将其粘贴到地址栏中。 无法跟踪是否转发了电子邮件(大多数电子邮件客户端阻止了HTML格式电子邮件中的webbug图像)。

如果要限制谁可以从您的服务器下载文件,则要求用户登录,然后希望他们之间没有人参与密码共享。

即使那样也不会阻止他们直接重新分发文件。

真正不可能“保护”链接。

但是,如果您的Web应用程序要求用户登录,则可以为每个用户生成一个唯一的链接,并要求他登录后才允许下载。

人们将比简单的网址更不愿意共享其登录名/密码。

我知道这是一个老问题,我不确定为什么它被否决了,但我想到了一个想法。 如果您在电子邮件中放置一个通用像素跟踪器,并带有标识用户和电子邮件版本的令牌,当请求时,您的服务器会记录电子邮件被打开和阅读(以及连续阅读)的时间。 然后,如果用户单击电子邮件中的链接,链接上的标记会标识同一用户和电子邮件版本。 当服务器收到此请求时,它可以将其与上次访问匹配跟踪像素的时间进行比较。 如果在请求链接前几分钟内访问了像素,则意味着打开了电子邮件,然后单击了链接。

如果用户簿标记了该链接并在第二天使用它,则不会有最近的跟踪像素历史记录,这意味着该请求不是来自收件箱。

这很容易被欺骗,因此不应将其用于任何类型的安全问题。 您不会知道该电子邮件是否已转发给其他人。 他们的电子邮件客户端也会命中跟踪像素。

许多电子邮件客户端会因为不断增加的隐私问题而阻止像素跟踪,因此它不可靠。

如果您只是在寻找使用情况的指示,这可能会奏效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM