安全下载文件

2023-12-08

我想要一个文件夹,我们称之为文档,其中包含登录用户可以下载的文档。这些包含非常敏感的信息。如何才能最好地保护该文件夹。我有 PHP 背景,所以想知道我是否忽略了任何事情。

我将使用 .htaccess 保护该文件夹,并且当用户单击下载时,他们永远不会显示该文件夹。通过 php 删除文件夹名称强制下载。

当然,为了保护用户区域,我对所有输入字段实施卫生和验证,并注意 SQL 注入。使用 SSL 连接。关闭所有 php 警告。安全区域使用 SESSION 变量来控制访问并重新验证用户是否执行特殊任务(例如更改密码)。加上 10 分钟的超时功能,之后用户必须重新输入详细信息。

我试图尽可能彻底,所以任何建议,无论多小,都会受到欢迎。


将文件放在 webroot 之外。然后使用 PHP 通过脚本传递文件。这样一来,任何人都无法直接链接到该文件并绕过您的控制。 (当然,请确保只有在验证用户有权检索该文件后才执行此操作的脚本)。

PHP 示例:

<?php
    if (!isset($_SESSION['authenticated'])) {
        exit;
    }
    $file = '/path/to/file/outside/www/secret.pdf';

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安全下载文件 的相关文章

  • 表头在 php 中的 for 循环中重复

    我正在尝试从数据库创建排行榜 我将数据打印在列表中 当我尝试将此数据放入 html 表中时 标题在每次数据输入后都会重复 这是 for 循环导致的 但我不知道如何只打印一次标题 然后将数据插入到每一行中 任何帮助将不胜感激 代码和结果的屏幕
  • PHP 文件大小报告旧大小

    以下代码是我编写的 PHP Web 服务的一部分 它需要一些上传的 Base64 数据 对其进行解码 然后将其附加到文件中 这一切都很好 问题是 当我在追加操作之后读取文件大小时 我得到了追加操作之前文件的大小 fileOut fopen
  • 在 PHP 中的请求之间存储对象而不进行序列化

    我正在用 PHP 编写一个有状态的 Web 应用程序 其中状态可能包含大量对象 目前 我将所有这些对象保存在 SESSION 中 并在请求结束时将它们序列化 这有点痛苦 因为序列化整个会话需要几秒钟 而反序列化则需要更多时间 我想尝试 AP
  • PHP:str_replace() - 忽略空格

    我有一个类似的字符串 我想将其替换为 问题是我不知道之间是否会有空格 和 可能有空白 也可能没有空白 可能有制表符或可能有换行符 我该如何更换
  • 在 PHP 中比较字符串的方式与 MySQL 相同

    我将 varchar 存储在 utf8 MySQL 表中并使用 utf8 general ci 排序规则 我在 varchar 上有一个唯一索引 我想在 PHP 中进行字符串比较 这相当于 MySQL 对索引所做的操作 一个具体的例子是 我
  • PHP UTF-8 问题 - 如果我在 PHP 中创建一个字符串...它是 UTF-8 格式吗?

    在 PHP 中 如果我创建一个像这样的字符串 str bla bla here is my string 然后我可以使用 mbstring 函数将该字符串作为 UTF8 进行操作吗 Will this work str mb strlen
  • openssl_decrypt 标签值

    我在网站中使用 openssl encrypt decrypt 方法 但在使用 tag 选项时遇到了一些问题 openssl encrypt data method key options iv tag openssl decrypt da
  • SMTP:无法连接套接字:无法找到套接字传输“ssl”

    我一直在尝试在 WAMP 上使用 Pear 发送电子邮件通过 GMail 花了几个小时将其全部设置并找出我遇到的所有错误后 我以为我已经很接近了 直到我开始收到此错误 Failed to connect to ssl smtp gmail
  • 使用 Python 2.7 和 MySQLdb 将二进制数据插入 MySQL 中的 blob 列时如何避免编码警告

    我在将二进制数据插入到longblob使用 Python 2 7 中的 MySQLdb 在 MySQL 中的列 但我收到一个编码警告 我不知道如何解决 test py 11 Warning Invalid utf8 character st
  • 如何从数据库生成 Doctrine 实体并使用 PSR-4 自动加载?

    使用教义2 5使用 PSR 4 自动加载并将已设计的数据库模式转换为实体类 注释 问题是将导出的文件放入正确的目录结构中 作曲家 json autoload psr 4 Application src require doctrine or
  • 正则表达式 - 剥离非数字并删除分(如果有)

    我目前正在开发一个 PHP 项目 需要一些正则表达式的帮助 我希望能够获取用户输入的货币值并删除所有非数字和小数位 分 Ex 2 000 00 到 2000 2 000 00 美元 到 2000 2abc000 到 2000 2 000 到
  • 在 OS X 10.7 中找不到 Mysql 命令

    我无法让我的 mysql 在 os x 10 7 上启动 它位于 usr local mysql bin mysql 当我输入时 我得到命令未找到mysql version在终端中 我试过这个无法从 mac 命令行访问 mysql http
  • XAMPP 不解析 PHP

    我刚刚安装了 XAMPP 1 8 1 并重新启动了计算机 开始运行 Apache 和 MySQL 并在 XAMPP 下的 htdocs 目录中的测试文件夹中创建了一个测试文件 当我访问 xampp index php 时 他们的页面显示正常
  • 当我使用加盐 CRYPT_MD5 加密我的密码时,正在加密什么?

    对字符串使用 md5 总是会产生字母数字加密结果 即 没有符号 然而 当我使用 php crypt 函数 特别是带有盐的 CRYPT MD5 并且它已打开 我已经检查过 时 它返回的假定 md5 哈希看起来不像 md5 哈希 例如 如果我
  • PHP 中消息队列和工作系统的有效架构?

    我正在尝试了解我想要在 PHP 应用程序中实现的消息队列模型和作业 我的目标是卸载需要发送到多个第三方 API 的消息 数据 因此访问它们不会减慢客户端的速度 所以将数据发送到消息队列是理想的 我考虑过仅使用 Gearman 来保存 MQ
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • Symfony错误在链配置的命名空间XXX中找不到类XXX

    关于这个主题已经有一些其他问题 但没有一个真正有帮助 我是 Symfony 的新手 所以很难理解它 我在文件 Client IntranetBundle LDAP LDAPAuthenticationProvider php 中 此代码导致
  • SQL:比较不同表中的两个计数

    我有 3 张桌子 一张桌子上有世界上每个国家及其代币 NAME CODE Afghanistan AFG Albania AL Algeria DZ American Samoa AMSA Andorra AND Angola ANG An
  • 如何将 JSON 文本转换为 PHP 关联数组

    我将以下 JSON 对象存储在文本文件 data txt 中 player black time 0 from 2c to 3d 我使用 php 阅读 问题 有没有简单的方法可以转换 data到 PHP 关联数组 我尝试过使用json de
  • ASP.NET API:尚未为此 DbContext 配置数据库提供程序

    我正在尝试从我的 Net Core API 项目连接到 MySql 数据库 这是我的上下文类 public class MyContext DbContext public MyContext public MyContext DbCont

随机推荐

  • 如何获取特定月份和年份的天数

    我有一个传递两个参数 Month 和 Year 的方法 我会这样调用这个方法 MonthDates January 2010 public static string MonthDates string MonthName string Y
  • iPhone——以编程方式创建UITabBar?

    如何做到这一点 请注意 我不想要控制器 只是一个标签栏 UITabBar aTabBar UITabBar alloc initWithFrame aFrame 您可能需要参考类文档例如像这样的方法 setItems animated 另外
  • 如何在 CSS 和 HTML 中创建价格标签形状

    所以我找到了这个答案 CSS3菜单形状 样式但不知道如何将其放在左侧 我已经搜索过了 但没有运气 这就是我想要实现的目标 我也发现了这个 改变三角形的形状 我怎样才能让它在另一侧工作 我的意思是箭头需要位于左侧 是否可以用一个来做到这一点d
  • 在matlab中用渐变灰度颜色绘制圆

    我想在matlab中画一个带有渐变颜色的圆 但我不能 有谁可以帮助我吗 示例图片可以在这里找到 这是一种方法 N 200 this decides the size of image X Y meshgrid 1 1 N 1 1 1 N 1
  • r 过滤具有唯一字段的数据框[重复]

    这个问题在这里已经有答案了 我给出了编码和 R 的第一步 但我遇到了一个问题 我有一个具有以下格式的数据框 Months Person April Person1 May Person2 April Person1 June Person
  • 自定义属性编辑器不适用于 Spring MVC 中的请求参数?

    我正在尝试使用 Spring 注释创建一个多操作 Web 控制器 该控制器将负责添加和删除用户配置文件并为 jsp 页面准备参考数据 Controller public class ManageProfilesController Init
  • app-inventor:将应用程序安装到 SD 卡上

    编辑以显示提问后一周的当前状态 我深入研究了应用程序发明家 因为我的孩子 10 岁和 12 岁 即将获得他们的第一部 Android 手机 并且已经完成了一些拖放编程 游戏制作者 所以我认为这对他们来说可能是一个很好的切入点 我现在已经用应
  • Swift 中的可变参数

    我有一段非常简单的代码 它在 Swift 语言中使用可变参数 我不明白它为什么抱怨 Double 不是相当于 Double 吗 我知道我可以这样传递 printList 2 3 4 5 我猜 Variadic 和我想象的不一样 您可以传递多
  • Laravel 多重联合

    我在以 laravel 方式 添加具有多个联合的查询时遇到问题 我正在尝试完成一个与以下生成的查询等效的查询 ipsql for n 1 n lt total networks n ipsql SELECT FROM ip WHERE ne
  • 如何在实现 Condition/ConfigurationCondition 接口的类中使用 @Value 或 Environment

    我只使用 JavaConfig 我有以下声明 Bean public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer return new
  • nginx x-accel-redirect 上“location”和“proxy_pass”的不同行为

    我的 nginx 配置如下 location mount points mount point1 internal alias repos mount point one location to proxy internal proxy p
  • Networkx 弹簧布局边缘权重

    我想知道如何spring layout考虑边缘权重 来自维基百科 另一种模型考虑每对节点 i j 的类似弹簧的力 其中每个弹簧的理想长度 delta ij 与节点 i 和 j 之间的图论距离成正比 而不使用单独的排斥力 最小化节点之间的欧几
  • 计算季度衰退和复苏

    给定这个数据框 GDP quarter 0 250 2015q1 1 260 2015q1 2 250 2015q3 3 240 2015q4 4 250 2016q1 5 260 2016q2 我怎样才能知道哪些季度是衰退 哪些季度是复苏
  • android中如何获取sd卡上的文件路径

    大家好 我的 SD 卡中有 mp3 文件 如何从sd卡获取mp3歌曲的文件路径 请帮助我 您可以从以下代码获取sdcard的路径 File extStore Environment getExternalStorageDirectory 然
  • 我可以压缩所有 python 标准库并且 python 仍然能够导入它吗?

    我读过一个教程 您可以将所有 libs 文件编译为 pyc 然后将所有 pyc 打包为压缩文件 然后蟒蛇仍然像魔法一样发挥作用 而且它变得明显变小了 但是当我将所有 pyc 文件压缩为 python36 zip 并将它们保存在 lib py
  • CSS 背景图像未加载

    我已经遵循了所有教程 它们都说了要说的话 我在 css 样式表中指定了主体内部的背景 但页面仅显示空白的白色背景 图像与 html 和 css 页面位于同一目录中 教程说的是 已被弃用 所以我在 css 中使用 body backgroun
  • 在html中链接jquery

    我无法成功将 jQuery 链接到我的 html 我已经编写了最简单的 jQuery 代码 这样我就知道它是正确的 并且我已经尝试了我能想到的一切 搜索并没有帮助 我的 html 文件名 test html
  • Python lxml:忽略 XML 声明(错误)

    我正在尝试解析文件浏览器 Thunar 的自定义操作文件 config Thunar uca xml 与lxmlPython 模块 由于某种原因 Thunar 显然写了一个malformed declaration进入这些文件 显然 ver
  • 从编译的发行版 exe 中删除类字符串名称

    我编译我的应用程序项目的发行版本 当我使用二进制编辑器查看编译后的最终 exe 时 我可以看到我自己创建的对象的所有类名称 例如 TPolygon TRectangle 等 作为 exe 内的二进制文本数据 我如何从 exe 中删除此信息
  • 安全下载文件

    我想要一个文件夹 我们称之为文档 其中包含登录用户可以下载的文档 这些包含非常敏感的信息 如何才能最好地保护该文件夹 我有 PHP 背景 所以想知道我是否忽略了任何事情 我将使用 htaccess 保护该文件夹 并且当用户单击下载时 他们永