如何在服务器上隐藏抓取工具和黑客的内容

时间:2016-12-03 17:29:46

标签: apache security server robots.txt

我在网上商店销售电子书。当买家完成后,他会收到一封带有下载链接的电子邮件:

http://www.my_domain.com/media/books/b476de3dd02e72a727bb762371d6bbad.pdf

每个文件都有一个隐藏的名称,如b476de3dd02e72a727bb762371d6bbad,以防止用户猜出名称,而不是my_book_name.pdf

robots.txt我有以下内容阻止抓取工具抓取并在搜索结果中显示:

User-agent: *
Disallow: /media/books/

我知道抓取工具可以注意它,但不能

有人知道更好的解决方案吗?通常的做法是什么?

P.S。我不想强迫用户输入密码来访问该文件。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您的网站会遇到严重的访问控制问题。如果一个用户购买电子书然后在社交媒体上分享链接怎么办?

您需要确保下载文件的用户实际上是付费的用户。换句话说,您需要身份验证。不应直接在服务器上引用文件,因为这样就无法实现授权。

虽然我认为使用用户名/密码登录网店来下载您购买的任何数字商品是相当普遍的。但是,我知道您不想这样做,但您仍需要对您的用户进行身份验证。

你可以做的一件事是当有人购买东西时,你可以创建一个加密随机令牌(即一个大的随机字符串)并将其存储在你的数据库中,链接到可以用令牌下载的文件,还有用户是否有用户。应该有一个时间戳来限制令牌的可用时间。

然后你可以有一个端点,比如/media/books/download/<<token>>让用户获取文件(或/media/books/download/<<token>>/<<filename>>允许多个文件使用相同的令牌)。关键是,购买同一本书的每个用户都会有所不同,而且也会有时间限制。您可以限制允许的下载次数,或者进行监控以检测是否从许多多个客户端IP地址等使用令牌来尝试发现欺诈。它不会是完美的,但也许你可以阻止大多数攻击者,除非你卖的是非常特别的书。 :)但是如果你不做这一切,它仍然会比直接链接到文件好得多。

这也可以解决搜索引擎问题。

答案 1 :(得分:0)

一个更好的选项是在.htaccess文件中使用以下内容放置在您正在讨论的这些文件的目录中。

<FilesMatch ".pdf$">
Header set X-Robots-Tag "index, noarchive, nosnippet"
</FilesMatch>

robots.txt文件只包含所谓的Crawler指令,告诉搜索引擎,由他们的User-agent:标识,不允许他们使用Disallow:他们可以(也应该)使用的地方允许:,并将它们指向站点地图:。