privacy - 保护 wordpress 上传的文件不被非登录用户访问?
问题描述
我为一个私人群体推出了一个 WordPress 网站。这个网站是一个公共的代表网站,但他们也发布了“私人”选中的“帖子”,所以只有登录的用户才能看到这些帖子。一切都会好起来的,但他们也会上传图像/文档文件并将它们附加/包含到私人或公共帖子中。公开帖子一切正常,但当文件用于私人帖子时,我们假设该文件是机密文件。但是这里 WordPress 允许直接通过链接 (URL) 访问任何上传的文件,即使您没有从浏览器登录到该站点。
我尝试搜索,但找不到真正有用的东西。甚至 FB 私人群组也对外部人员有此文件访问限制,GitLab 也有权限,如果您不在项目中,则无法访问那里的任何内容。似乎如果我使用 WordPress/Joomla/Drupal,它会被黑客/捣乱来实现我想要的。
您有什么建议吗,也许是通过 WordPress (PHP) 而不是直接通过 Web 服务器访问上传的文件,所以通过 PHP 我可以进行一些 SQL 查询并检查该文件包含哪些帖子以及用户是否登录?也可能有一些插件可以做到这一点?
PS 我不会问我是否完全了解 WordPress,但在这种情况下,我只是或多或少地启动了它。
解决方案
解决此问题的一种方法是将文件内容作为 blob 存储在数据库中。但是,如果文件很大,这可能会出现问题,正如您预测的那样:您可以确保收件人在交付内容之前获得授权。另一种选择可能是在保存帖子时移动文件,以便无法直接在 http 端点上访问它。
在任何一种情况下,您都可以使用将对该目录中文件的.htaccess
任何GET
请求重定向到提供内容的新 php 文件。您可以使用标准 WordPress 功能检查用户是否在交付前登录,和/或即时从数据库中提取内容。这些选项需要自定义代码来实现。
(顺便说一句,文件是否正在检查恶意内容,并且文件名是否被更改为不确定的内容?这是攻击的载体。)
如果您不想编写代码,您可以考虑并行安装ownCloud或NextCloud,然后在私人帖子中,您的用户在其他服务中放置指向该文件的链接。这两个应用程序都为各种设备提供了许多不同的客户端,以及限制对特定组和用户的访问的能力。
推荐阅读
- php - 顶部有匹配项的订单标签
- tensorflow - tf.data.Dataset 中的 TensorFlow 动态批量大小
- c++ - 从异构列表中提取数据
- sql - SSRS 表达式在替换括号“(”“)”时显示#Error
- xml - 在 oracle 中每隔 3 次出现逗号后打印所有字符
- java - 与框架相同的包名和类名
- python - 如何在 Python 中使用 Kullback-Leibler Divergence 获得概率密度函数
- magento2 - 如果 magento 2 中有两次,请从 URL 末尾删除 .html
- java - 阴影静态变量(全局变量)
- php - Laravel 邮件队列不同于邮件发送