在PHP中加密URL

时间:2013-07-26 22:45:37

标签: php encryption

我在服务器上上传了一些文件。提供给我的链接非常简单,即i-e;没有标志/符号等。如果我向用户提供相同的链接以下载数据,则可能导致我的服务器被黑客入侵或数据丢失。现在我的问题是如何加密这种

  www.hello.com/myApp/myFile.mp3
url的

并向用户提供加密的URL,浏览器可以理解。

此致

2 个答案:

答案 0 :(得分:1)

如果我误解了,请纠正我,但是你是否试图阻止某人下载该文件,除非你告诉他们可以下载它?

然后威胁是有人可能会发现在搜索引擎上链接的文件或者能够猜到它。

有几种方法可以降低威胁的可能性。

  1. 将网址设置得很长且不可思议。只需将文件重命名为某个随机值即可。从命令行(linux)

    echo http://example.com/file.mpe $(date) | md5sum d8a5e8d341135379b8ad38f1d06970be

    或者更简单一点,从http://tooln.net/pw/中选择随机密码并将文件重命名为其中一个没有符号的密码。要么难以猜测。

  2. 如果您认识此人,则可以轻松共享密码并在目录中设置密码。您可以通过apache打开passwords per directory

  3. 通过robots.txt关闭网站的索引编制。

答案 1 :(得分:0)

URL可以加密,但如果浏览器可以理解它,那么解密它对于黑客来说将是一个微不足道的过程。我假设您要做的是阻止太多人访问您的网址。为此,您必须具有某种用户登录系统或基于IP的限制。这两个都必须由数据库支持。

不是直接链接到文件,而是链接到类似download.php?fileid=$some_file_id的内容,而在数据库中,只需在每次下载文件时插入用户ID(或IP地址)和文件ID。然后,要将文件显示给用户,您将检查用户已下载了多少文件,以及是否小于阈值,例如:

SELECT COUNT(*) FROM downloads WHERE user = :user AND file_id = :id

然后让PHP将文件内容回显给浏览器。

添加其他条款,例如在过去24小时内将其限制为X次下载等,或者您想要使用它。

您可以做的其他事情是将文件存储在文档根目录之外(或保护使用.htaccess或类似的直接访问),并在链接中包含文件名的哈希值,因此有人不能只是做download.php?fileid=1并猜测下一个是download.php?fileid=2

相关问题