防止用户从Python下载文件?

时间:2010-08-03 02:57:21

标签: python windows passwords downloading

我正在开发一个需要密码保护下载的项目,但我不确定如何实现它。如果目标文件具有特定扩展名(.exe,.mp3,.mp4等),我想提示用户输入用户名和密码。关于这个的任何想法?

我在Windows XP上使用Python 26。

2 个答案:

答案 0 :(得分:2)

最好在Web服务器级别实现。

如果您使用的是Apache,可以通过将您想要保护的文件放在一个需要用户身份验证的htaccess文件的目录中来完成。

然后,在Python脚本中实现HTTP Basic Auth以下载文件。确保使用SSL连接; basic auth通过明确的线路发送用户密码。

答案 1 :(得分:1)

使用HTTP的basic authentication(显示在我从客户端引用的网址中):

  1. 每当请求“敏感”页面或文件时,并且没有授权标头 请求(或它无效,见下文),返回401状态代码, 标题WWW-Authenticate: Basic realm=XXXX(其中XXXX是URL的哈希值, 例如使用MD5或SHA1,使其基本上是唯一的文件)
  2. 然后用户需要在他的浏览器中输入用户名和密码 使用显示的简单算法将它们发送回您正在实施的服务器 在该URL处,即:

    导入base64 base64string = base64.encodestring('%s:%s'%(用户名,密码))[: - 1] req.add_header(“授权”,“基本%s”%base64string)

  3. 当请求中存在Authorization标头时,解码base64字符串 它会在'Basic '之后显示,并检查它是否包含您想要的username:password

  4. 当然,您可以使用更复杂的身份验证,但这可能会让您开始,除非用户的连接可以(或者您怀疑)被邪恶的第三方“嗅探”(在这种情况下,您仍然希望使用HTTPS) ,以便基本身份验证再次变得正常; - )。