php - 提高 Wordpress 站点的 PHP Cron Job 的安全性
问题描述
我正在一个Wordpress 网站上工作,在那里我将不得不执行一些cron 作业。该站点很可能会部署在 Linux 共享主机提供商上,因此我对运行 cron 作业的选择是有限的。
我的计划是创建一个独立的原始 PHP 脚本,该脚本将使用Linux crontab 命令定期执行。该脚本将在内部调用我的 Wordpress 站点上的 URL,并执行一些 Wordpress 挂钩。
我主要关心的是确保我的 cron 工作。
下面我概述了我的计划的细节,在这篇文章的结尾我提出了一些安全问题。请通过提出更好的方法来帮助我。
1.文件夹结构
custom_cron automatic.php ===> 这是我的机器人脚本 标志.txt public_html .htaccess wp_config.php wp_content/ wp_includes/
2. 准备机器人
- 根据上面显示的文件夹结构,机器人脚本将位于automation.php 中
- 使用 Linux crontab 命令,automate.php 将被安排在每天执行。
- 它将使用 PHP CLI 执行
3. 机器人做什么
- 通过检查 flag.txt 文件检查今天是否已执行
- 如果今天已经执行完毕,退出
- 获取wordpress数据库用户名和密码。(这些将在automate.php中进行硬编码,类似于在wpconfig.php中的完成方式)
- 使用 PHP MySQLi 连接到 wordpress 数据库
- 从 wp_options 表中获取一个随机令牌(之前由 Wordpress 生成)
- 使用 curl,调用 URL http://my-wordpress-domain.com/nice-actions?token=step_6_token
- 更新 flag.txt,表示机器人今天执行
4. bot调用Wordpress URL后
- 调用的 URL 是面向公众的 URL。但我不希望使用网络浏览器正常访问它。
- 检查查询字符串中是否存在令牌并验证它
- 如果令牌不存在/无效
- 退出给出“拒绝访问”消息
- 如果令牌存在且有效
- 从 wp_options 表中删除令牌
- 执行一些 wordpress 钩子
- 在 wp_options 表中重新生成令牌(用于第二天)
- 如果令牌不存在/无效
5. 我将采取的安全措施
- 将机器人脚本放在 public_html 之外,以防止网络访问
- 没有人可以在不知道令牌的情况下调用 Wordpress 站点
- 配置 crontab 时,以最低权限运行automate.php(很可能我会使用public_html 文件夹的所有者)
问题:以下是否有更好的方法?
- 在automate.php中硬编码wordpress数据库凭据并使用PHP MySQLi连接
- 使用 wordpress 数据库用户将automat.php暴露给整个 WORDPRESS DB
- 使用 Linux 共享主机提供商时,是否有可能在 crontab 之外调用automate.php?
我已经看过的资源
解决方案
推荐阅读
- ios - 消息线程`MessageKit`swift的左对齐
- bash - 通过 ssh 从 bash 文件将文本输入到 docker 容器中
- hibernate - JPA / Hibernate 实体响应缺少一列
- flutter - 如何在颤动中多次推送和弹出单个页面?
- python-3.x - 密码提示在 python 代码中不可见
- amazon-web-services - 如何在用户数据中运行多个 PowerShell 命令并重新启动?
- python - 简单并发代码中的“从未等待过协程”
- php - PHP 从数组中下载文件
- python - 如何在 tensorflow 训练期间进行验证?
- node.js - 似乎无法通过 NodeJS 提交到 Google 表单