如何阻止用户从Python下载文件?

0 投票
2 回答
644 浏览
提问于 2025-04-16 02:13

我正在做一个项目,需要实现密码保护的下载功能,但我不太确定该怎么做。如果目标文件有特定的后缀名(比如 .exe、.mp3、.mp4 等),我想要提示用户输入用户名和密码。有没有什么好的建议呢?

我在 Windows XP 上使用 Python 26。

2 个回答

2

这个功能最好是在网页服务器上来实现。

如果你使用的是Apache服务器,可以把你想保护的文件放在一个有htaccess文件的文件夹里,这个文件会要求用户进行身份验证。

接着,在你的Python脚本中实现HTTP基本认证来下载这些文件。记得使用SSL连接,因为基本认证会明文发送用户的密码,这样不安全。

1

使用HTTP的基本认证(在我引用的客户端链接中有说明):

  1. 每当请求一个“敏感”的页面或文件时,如果请求中没有Authorization头(或者它无效,见下文),就返回一个401状态码,并带上一个头信息WWW-Authenticate: Basic realm=XXXX(这里的XXXX是URL的哈希值,比如用MD5或SHA1,这样每个文件基本上都是唯一的)
  2. 用户接下来需要在浏览器中输入用户名和密码,这些信息会通过一个简单的算法发送回你正在实现的服务器,具体如下:

    import base64
    base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
    req.add_header("Authorization", "Basic %s" % base64string)

  3. 当请求中有Authorization头时,解码它后面跟着的base64字符串,并检查里面是否包含你想要的username:password

当然,你可以使用更复杂的认证方式,但如果用户的连接可能被坏人“监听”(你有这样的怀疑),那么你还是应该使用HTTPS,这样基本认证就可以安全使用了;-)

撰写回答