首页 > 解决方案 > 如何在不在 url 中传递敏感信息的情况下访问 codeigniter 根目录之外的文件夹?

问题描述

我的代码(视图)到目前为止,当我使用根访问文件夹(上传)时,一切都运行良好,但我想使用同一台服务器访问位于不同位置的文件夹,而不在图像时在 url 中显示敏感信息负载。

   <img src="<?php echo base_url('/uploads/'.$popular_car['img_path'])?>" class="card-img-top" 
   style="height: 150px;"></div>

标签: codeigniter

解决方案


有很多选择。大多数将涉及某种数据库使用。这就是我所做的(非常总结)

每个需要访问的文件在表上都有一条记录。该记录有一个主 ID、一个秘密随机令牌和文件路径。该表由主 ID 和令牌索引。

在 URL 上,我得到类似base_url('controller/file_access/).$id.'/'.$token. 收到请求后,我会检查文件表,如果两个参数都匹配,我会将文件流式传输到浏览器。这种做事方式虽然有点复杂,但有两个主要好处:

1.- 它可以防止用户尝试不同的数字 ID 并查看显示的内容。由于 ID 是数字和自动递增的,因此您需要做的就是从 1 循环到 100000 并下载所有文件。添加令牌并使用这两个参数查询表大大降低了某人获取他/她不打算获取的文件的风险。

2.-它掩盖了文件的真实位置,因为以这种方式将其流式传输到浏览器看起来(在浏览器的眼中)位于其中,example.com/controller/file_access/id/token但图像的真实或相对路径仍然隐藏且无法从网络。

以此为基础,您可以根据需要在此基础上添加大量逻辑。如果文件是私有的和/或特定于用户的,您还可以在表中有一个“allowed_user”字段,这样如果不允许用户查看文件,您就不会流式传输文件(即使他有正确的 ID/令牌组合)。

这只是对我在几个网站上所做工作的粗略描述。把它作为你可以建立的理论基础。


推荐阅读