首页 > 解决方案 > 保护 wordpress 上传的文件不被非登录用户访问?

问题描述

我为一个私人群体推出了一个 WordPress 网站。这个网站是一个公共的代表网站,但他们也发布了“私人”选中的“帖子”,所以只有登录的用户才能看到这些帖子。一切都会好起来的,但他们也会上传图像/文档文件并将它们附加/包含到私人或公共帖子中。公开帖子一切正常,但当文件用于私人帖子时,我们假设该文件是机密文件。但是这里 WordPress 允许直接通过链接 (URL) 访问任何上传的文件,即使您没有从浏览器登录到该站点。

我尝试搜索,但找不到真正有用的东西。甚至 FB 私人群组也对外部人员有此文件访问限制,GitLab 也有权限,如果您不在项目中,则无法访问那里的任何内容。似乎如果我使用 WordPress/Joomla/Drupal,它会被黑客/捣乱来实现我想要的。

您有什么建议吗,也许是通过 WordPress (PHP) 而不是直接通过 Web 服务器访问上传的文件,所以通过 PHP 我可以进行一些 SQL 查询并检查该文件包含哪些帖子以及用户是否登录?也可能有一些插件可以做到这一点?

PS 我不会问我是否完全了解 WordPress,但在这种情况下,我只是或多或少地启动了它。

标签: privacywordpressfile-uploadfile-access

解决方案


解决此问题的一种方法是将文件内容作为 blob 存储在数据库中。但是,如果文件很大,这可能会出现问题,正如您预测的那样:您可以确保收件人在交付内容之前获得授权。另一种选择可能是在保存帖子时移动文件,以便无法直接在 http 端点上访问它。

在任何一种情况下,您都可以使用将对该目录中文件的.htaccess任何GET请求重定向到提供内容的新 php 文件。您可以使用标准 WordPress 功能检查用户是否在交付前登录,和/或即时从数据库中提取内容。这些选项需要自定义代码来实现。

(顺便说一句,文件是否正在检查恶意内容,并且文件名是否被更改为不确定的内容?这是攻击的载体。)

如果您不想编写代码,您可以考虑并行安装ownCloudNextCloud,然后在私人帖子中,您的用户在其他服务中放置指向该文件的链接。这两个应用程序都为各种设备提供了许多不同的客户端,以及限制对特定组和用户的访问的能力。


推荐阅读