在从我的服务器下载自动生成的文件之前,如何要求用户输入密码?

Posted

技术标签:

【中文标题】在从我的服务器下载自动生成的文件之前,如何要求用户输入密码?【英文标题】:How can I ask for users to input a password before downloading a autogenerated file from my server? 【发布时间】:2012-04-07 09:47:07 【问题描述】:

所以,我有以下情况: 我希望用户进入页面 www.server.com/download.php,被要求输入用户名和密码,然后如果有效,服务器将生成一个文件 file.csv 在 webroot 中并将用户重定向到它(让他下载文件)。 另一个重要的细节是,这个任务应该很容易用 wgetcurl 或其他自动下载工具来完成。 我已经让系统工作了,我可以 wget www.server.com/download.php 并获得 file.csv! 问题是 file.csv 位于 webroot 上,任何人都可以通过直接访问它来下载它,并且任何人都可以触发 download.php

欢迎任何建议!

【问题讨论】:

如果您不需要花哨的密码管理,您可以使用 apache pw-protect 下载脚本并使用纯 jane http 基本身份验证密码提示。然后将 .csv 文件从您的 webroot 中移出,以便只能通过 download.php 脚本访问它。 Marc 是对的,只需使用 .htpsswd 文件即可。 与存储在数据库或其他地方的散列密码相比,使用 .htpsasswd 极其不安全。 【参考方案1】:

将您的下载文件放在一个受保护的目录中,该目录只有在服务器端用户身份验证标志设置为 true 时才能访问。将您的身份验证表单和错误页面放在公共目录中。将任何试图访问受保护目录的未经身份验证的流量重新路由到错误页面

【讨论】:

【参考方案2】:

我建议您使用 php 对用户进行身份验证,然后将他定向到 file.csv @ webroot,这实际上是一个脚本(由 htaccess 重写),它将检查用户是否经过身份验证,如果他是,那么他将获取他的文件。在这种情况下,所有文件都可以存储在任何地方,例如 /files/ 文件夹中的任何您想要的名称。

【讨论】:

以上是关于在从我的服务器下载自动生成的文件之前,如何要求用户输入密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 Web 服务器传送加密文件?

如何只允许 PHP 从我的服务器下载图像?

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?

Android部分下载http

Mailchimp 不会忘记未订阅的用户

如何在调用 Apollo Graphql Query 之前等待服务器响应?