WordPress本身的安全性相对来说还是值得信任的,但是依然还是有一些缺点,那么如何避免Wordpress站点被黑呢?我们来看看纯净Wordpress站点存在的一些安全隐患吧。
分类: 编程
-
how to improve the rank of search results in google
There are many factors that affect a website’s ranking in Google search results, but some of the most important include:
-
php: /usr/local/lib/libcurl.so.4: no version information available (required by php)
出现原因是安装了多个版本的库,ubuntu的一些库似乎增加了一些附加补丁,导出的符号与ubuntu有关联的版本信息,但在标准的库中是没有的。
-
use multiple simple queries or a join
The decision of whether to use multiple simple queries or a join depends on the specific requirements of the query.
-
Windows rclone挂载sftp
手动挂载命令:
rclone mount sftp:/mnt o: --cache-dir %SystemRoot%TEMP --allow-other --vfs-cache-mode writes --vfs-cache-max-age 60s --allow-non-empty创建服务:
// 安装nssm winget install nssm // 创建服务 nssm install rclone配置信息(具体路径需要根据实际情况来确定):
Path: C:UsersAdministratorDocumentsbinrclone.exe Arguments: mount config:/root A: --volname sftp --config C:UsersAdministratorAppDataRoamingrclonerclone.conf遇到的问题
1. 无法修改文件
是因为nssm默认使用LocalSystem用户。
任务管理器-服务-右键rclone选择打开服务->找到rclone右键选择属性->登录->选择此账户->点击右侧浏览->弹出框中选择高级->立即查找->选择一个本地账户比如Adminstrator->一路确定。
-
使用WordPress作为小程序后端——APPID有效性前置检查
上一篇实现了一个简单的前置检查,这一篇我们来聊一聊如何实现APPID的有效性检查。上一篇中,我们只是简单的将APPID获取到并传递到了请求处理函数中,这一篇,我们来实现一个APPID有效性的前置检查,或者叫中间件。
APPID的检查相对比较简单,我们可以透过一种比较Wordpress的方式来实现:
add_filter('wechat_mp_permission_callback', function ($permission, WP_REST_Request $request) { if ($permission === false) { return false; } $wechat_mp_apps = apply_filters( 'wechat_mp_apps', [] ); $attrs = $request->get_attributes(); return array_key_exists($attrs['app_id'], $wechat_mp_apps); }, 10, 2); -
构建WordPress插件、主题开发镜像
构建PHP镜像
PHP内置服务器的路由脚本可以参考这个链接:使用PHP内置服务器运行WORDPRESS
FROM php:8.1.27-alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && mkdir /code && docker-php-ext-install mysqli CMD [ "php", "-S", "0.0.0.0:8080", "-t", "/code", "/code/router.php" ]配置compose
version: "3" services: wordpress: build: . volumes: - /Users/ianzhi/Code/php/wordpress:/code restart: always ports: - 8080:8080 mysql: image: mysql:8.0.36 environment: MYSQL_ROOT_PASSWORD: 'root' expose: - 3306 ports: - 3306:3306 -
使用Caddy反向代理WordPress
具体配置
xxx.xxxx.xxx { tls youremail@yourmailserver root * /path/to/wordpress # GZIP和FPM配置 encode gzip file_server php_fastcgi php:9000 # 静态文件配置 @static_files { path_regexp .(?:css|js|woff2?|svg|gif|map|png|jpg|webp|gif|jpeg|mp4|mp3|wav|mov|heic) } header @static_files { Cache-Control "public, max-age=15778463" X-Robots-Tag "none" X-Permitted-Cross-Domain-Policies "none" X-Frame-Options "SAMEORIGIN" X-Download-Options "noopen" X-Content-Type-Options "nosniff" # Referrer-Policy "no-referrer" } # 禁止访问的目录/文件 @disallowed { #path /wp-cron.php #path /xmlrpc.php path *.sql path /wp-content/uploads/*.php path /wp-content/uploads/*.html path /wp-content/debug.log } rewrite @disallowed =404 } -
Debian配置自动清理Journal日志
在Debian系统上(红帽系Linux发行版应该也是一样的),
systemd-journald服务负责管理journal日志。这些日志可以占用大量的磁盘空间,特别是当系统持续运行并且产生大量日志条目时。可以配置systemd-journald的日志保留策略来自动清理这些日志。 -
MySQL配置及优化
一、配置项及意义
配置项 意义 建议 innodb_buffer_pool_size 控制 InnoDB 存储引擎的内存缓存池大小 总内存(非专用服务器可以使用希望分配给数据库的内存量)的 50% 到 80% innodb_buffer_pool_chunk_size InnoDB 缓冲池大小调整操作的块大小,默认值为 128MB innodb_buffer_pool_size = innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances innodb_buffer_pool_instances 决定了 InnoDB 缓冲池(Buffer Pool)的实例数量 设置为 CPU 核心数的较小倍数,超过 1GB 时可以适量增加,最高不超过1000 innodb_buffer_pool_in_core_file 从核心文件中排除缓冲池页面,参考15.8.3.7 从核心文件中排除缓冲池页面_MySQL 8.0 参考手册 off innodb_flush_log_at_trx_commit 定义了事务提交时,InnoDB 如何处理未刷入(flush)的重做日志(redo log),默认值为1,设置为0/2,在操作系统崩溃或断电时可能会丢失最后一秒的事务数据 对于需要高可靠性和数据完整性的系统设置为 1,对于性能要求更高,且可以接受一定数据丢失风险的系统设置为 0 或 2。 innodb_change_buffering 控制着 InnoDB 执行变更缓冲(Change Buffering)的程度 none innodb_log_buffer_size 设置InnoDB日志缓冲区的大小 64m innodb_flush_method 决定了 InnoDB 如何将数据和日志刷新(flush)到磁盘 O_DIRECT innodb_purge_threads 定义了用于回收不再需要的 UNDO 日志的 Purge 线程的数量 cpu > 4 ? 4 : 1 -
APP Store应用上架需要注意的点
最近公司的应用上架APP Store过程中一直遇到审核问题,记录一下遇到的问题,方便后续其他应用开发避坑。
## 1、与安卓通用的审核条件
>>> [APP分发前的准备工作](https://www.dnote.cn/posts/899)
## 2、虚拟支付
– 所有的虚拟商品直接使用苹果的内购方式付款,避免后续改造的问题(需要给苹果30%抽成)
– 提前考虑宣传物料和价格在不同货币区域的展示,或者避免物料中包含价格
– 至少审核阶段,不要在应用界面里放跳转到其他应用的链接,苹果审核会认为这涉及到其他支付方式## 3、强制登录问题
微信小程序也是一样的要求,所以最好设计阶段就开始考虑这个问题。– 不需要用户信息的数据不设计为强制鉴权
– 将引导用户登录放到用户进行必须鉴权的操作时 -
使用Docker Compose部署NextCloud和WordPress
一、全局配置
name: lnmp services: caddy: image: caddy:latest volumes: - ./www:/var/www/html - ./caddy/etc:/etc/caddy - ./caddy/data:/data - ./caddy/config:/config ports: - 80:80 - 443:443/tcp - 443:443/udp logging: driver: "json-file" options: max-size: "10m" max-file: 3 restart: always redis: image: redis:latest volumes: - ./redis/config:/etc/redis - ./redis/data:/data restart: always command: /etc/redis/redis.conf mysql: image: mysql:latest volumes: - ./mysql/config:/etc/mysql - ./mysql/data:/var/lib/mysql - ./mysql/mysql-files:/var/lib/mysql-files cap_add: - SYS_NICE security_opt: - seccomp:unconfined environment: MYSQL_ROOT_PASSWORD: password ports: - 3306:3306 restart: always php: build: ./php volumes: - ./php/config:/usr/local/etc - ./php/logs:/var/log/php - ./www:/var/www/html depends_on: - caddy - mysql - redis cap_add: - SYS_PTRACE logging: driver: "json-file" options: max-size: "10m" max-file: 3 restart: always imaginary: image: nextcloud/aio-imaginary:latest restart: always command: -concurrency 2 -enable-url-source environment: - PORT=90001. PHP
PHP官方的镜像启用和安装的扩展比较少,直接使用会导致WordPress和Nextcloud的健康检查一堆信息,所以使用Dockerfile来基于官方镜像构建一个专用的镜像,PHP需要的扩展包括:
- gd(png/jpeg/gif/webp/avif)
- imagick
- opcache(考虑性能)
- apcu(Nextcloud的本地缓存)
- zip(影响WordPress插件安装)
- redis(WordPress的对象缓存和Nextcloud的分布式缓存)
- gmp
- intl
FROM registry.cn-beijing.aliyuncs.com/ianzhi/php:8.4-fpm-alpine # 配置国内镜像 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # 安装构建扩展相关依赖 RUN apk add --no-cache --update --virtual .build-deps $PHPIZE_DEPS # MySQL RUN docker-php-ext-install pdo_mysql mysqli \ && docker-php-ext-enable pdo_mysql mysqli # 常用扩展 RUN docker-php-ext-install pcntl exif bcmath sysvsem \ && docker-php-ext-enable opcache exif bcmath pcntl sysvsem # apcu RUN pecl install apcu && docker-php-ext-enable apcu # zip扩展 RUN apk add --no-cache --update libzip=1.11.4-r0 libzip-dev=1.11.4-r0 unzip \ && docker-php-ext-install zip \ && docker-php-ext-enable zip # redis RUN pecl install https://pecl.php.net/get/redis-6.2.0.tgz \ && docker-php-ext-enable redis # intl RUN apk add --no-cache --update icu icu-dev \ && docker-php-ext-configure intl \ && docker-php-ext-install intl \ && docker-php-ext-enable intl # imagick RUN apk add --no-cache --update imagemagick-dev imagemagick-svg \ && pecl install https://pecl.php.net/get/imagick-3.8.0.tgz \ && docker-php-ext-enable imagick # gd RUN apk add --no-cache --update libpng libpng-dev libavif-dev libjpeg-turbo-dev freetype-dev freetype libjpeg-turbo libavif \ && docker-php-ext-configure gd --with-freetype --with-jpeg --with-avif \ && docker-php-ext-install gd \ && docker-php-ext-enable gd # ffmpeg nextcloud需要视频转码时启用 # RUN apk add --no-cache ffmpeg # gmp nextcloud使用加密时使用 # RUN apk add --no-cache --update gmp-dev \ # && docker-php-ext-install gmp \ # && docker-php-ext-enable gmp # pgsql # RUN apk add --no-cache --update libpq-dev postgresql-dev \ # && docker-php-ext-install pdo_pgsql \ # && docker-php-ext-enable pdo_pgsql # 删除构建依赖 RUN apk del --no-network .build-deps # 配置文件 RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini