WordPress详细安全设置
文件权限设置
wordpress文件权限设置涉及到几个目录:
1. 根目录 /,/wp-admin/,/wp-includes/ :
所有的文件应该设置为只有自己的用户帐号有写入权限,其它的只设置有读权限。
2. /wp-content/:
用户目录,可以设置为所有用户可写。
3. /wp-content/themes/:
主题目录,如果你需要在后台使用主题编辑器,需要设置为可写。
4. /wp-content/plugins/ :
插件目录,设置只有你的用户帐号可写。
提示:wordpress全站目录不需要可写都可以正常运行,所以建议设置为全站不可写,当需要自动升级,安装主题或插件时,可以临时设置为可写,之后再关闭写入权限即可,这是最安全的设置。
§§※※※→→→★★★←←↑↓〓¤◆◎◇○☆№■&@※△▲♂♀― ̄〓
2022-09-24再次概括为【有效】:
1. 网站根目录/wwwroot/ 及应用到子目录,权限设置为500 【让木马提权不了】;
2. 目录 /wp-content/uploads、/wp-content/cache、/wp-content/wp-cache-config.php、/wp-content/advanced-cache.php、/wp-content/object-cache.php 及应用到子目录,权限设置为700 【让发布新闻时可以上传图片,缓存时可以入】;
3. 目录 /a 及 /index.bak 应用到子目录,权限设置为700 【若启用了插件 hsx-cos-html-cache 让生成静态html文件】;
WordPress版本升级以及主题和插件升级时,全部目录改成700。升级好再改回来。
【说明】真静态生成,用hsx-cos-html-cache更合适,是真生成,可以脱离数据库访问全站。
但生成真静态后,对于有关注公众号隐藏内容、调用腾讯视频内容,这样的动态交互场景,纯静态HTML会造成访问失败。此种场景下,需要开启插件wp-super-cache 超级缓存 功能。
↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑
§§§※※※→→→★★★←←↑↓〓¤◆◎◇○☆№■&@※△▲♂♀― ̄〓
2022-09-09再次概括为【有效】:
1. 网站根目录/wwwroot/ 及应用到子目录,权限设置为500 【让木马提权不了】;
2. 目录 /super-static-cache 及应用到子目录,权限设置为700 【让生成静态html文件】;
3. 目录 /wp-content/uploads 及应用到子目录,权限设置为700 【让发布新闻时可以上传图片】;
WordPress版本升级以及主题和插件升级时,全部改成700。升级好再改回来。
↑
§§§※※※→→→★★★←←↑↓〓¤◆◎◇○☆№■&@※△▲♂♀― ̄〓
2022-08-30再次概括为【有效】:
1. 网站根目录/wwwroot/ 及应用到子目录,权限设置为500
2. 根目录下的 /wp-config.php,权限设置为400
3. /wp-content/ /wp-admin/ 二个文件夹,应用到子目录,权限设置为700
主题和插件升级时,可以正常升级,不用像上个方法那样,修改权限供升级,升级好再改回来。这个方法,设置一次就够了。
↑↑↑↑↑↑↑↑以上测试可行。↑↑↑↑↑↑↑↑
我自己总结:
网站WEB目录wwwroot,设置 WWW 540 应用到子目录
/wwwroot/wp-content/uploads 对这个目录设置740,不然上传文件时,上传不了图片。
升级插件和主题时,需要把WWWROOT目录设置成740,然后升级成功后,再恢复成540 记得uploads要恢复成740
这样,就可以解决权限过高问题了。
若有WP Super Cache 设置,则需要配置以下权限:
wwwroot/wp-content/cache 这个目录要740权限
wwwroot/wp-content/wp-cache-config.php 这个文件也要740权限
再次概括为:
1. 网站根目录及应用到子目录,权限设置为540
2. 根目录下的 wp-config.php,权限设置为400
3. /wp-content/uploads /wp-content/cache /wp-content/wp-cache-config.php 二个文件夹和一个文件,从540修改为740
4. 主题和插件升级时,根目录恢复成740,升级好后,再重复上面的配置。
下是最常见的值的含义:
- 755 – 所有者可以读取、写入和执行。其他所有人都可以读取和执行该文件,但不能进行任何更改。755是公共文件的标准。
- 644 – 所有者拥有读写权限,而其他人只能读取文件。
- 711 – 所有者可以做任何事情,但所有其他用户只有执行能力。
- 700 – 所有者拥有完全控制权,其他所有人都无法执行任何操作,包括读取文件。这是最高的安全权限之一。
- 600 – 所有者拥有读写权限。其他所有人都被完全封锁。600值甚至比700更安全,使其最适合私人文本文件。
尽管您通常不必更改太多权限,但以下是有关文件和目录中最高安全性和功能的一些建议:
wp-config文件应具有440或400值,以便外部人员无法读取该文件。这也限制了所有者对文件犯错。- 所有其他WordPress文件都应具有644或640数值。
- 目录需要完全所有者控制,因此建议使用755或750的权限。
- 永远不要使用777的权限值。组和公众不需要完全访问权限来编辑您的WordPress文件。这也适用于上传文件,即使其中一些文件看起来并不那么重要。
.htaccess文件是另一个极其重要的核心文件。因此,建议使用440或400的权限。没有理由向包括所有者在内的任何人提供完整的写入或执行访问权限。这可以防止意外错误。
要深入了解文件权限以及如何更改它们,请查看有关更改WordPress文件权限的文章。
==========================
【一、主题下functions.php修改】
//【高修改】 让WordPress支持用户名使用中文注册,支持9个汉字。本段内容放在主题目录下的functions.php下。
function git_sanitize_user ($username, $raw_username, $strict) {
$username = wp_strip_all_tags( $raw_username );
$username = remove_accents( $username );
$username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
$username = preg_replace( '/&.+?;/', '', $username ); // Kill entities
if ($strict) {$username = preg_replace ('|[^a-z\p{Han}0-9 _.\-@]|iu', '', $username);}
$username = trim( $username );
$username = preg_replace( '|\s+|', ' ', $username );
return $username;}
add_filter ('sanitize_user', 'git_sanitize_user', 18, 3);
//【高修改】wp-login.php添加相关参数,保护后台登录 本段内容放在主题目录下的functions.php下
//修改后的登录地址是:【http://域名/wp-login.php?ABC=DEF 才可以登录】
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
if($_GET['ABC'] != 'DEF')header('Location: /');
}
//【高修改】 禁用xmlrpc.php,避免被暴力破解。 本段内容放在主题目录下的functions.php下。
add_filter('xmlrpc_enabled', '__return_false');
【二、/wp-config.php 修改】
/* Add any custom values between this line and the "stop editing" line. */
/* 本段修改内容放在/wp-config.php 里面的 Add any custom values between this line and the "stop editing" line. 和 That's all, stop editing! Happy publishing. 之间。*/
/* 在该行和“停止编辑”行之间添加任何自定义值*/
/** 【高修改】REDIS相关配置,一定要放在 define( 'WP_DEBUG', false ); 后面,放在 if ( ! defined( 'ABSPATH' ) 前面,否则,直接放在最后,是不生效的。此处错误切记!然后,REDIS每次升级,不用修改端口了。很好用!
* @link https://github.com/rhubarbgroup/redis-cache/wiki */
define( 'WP_REDIS_PREFIX', 'it.hsx.ltd' ); # Redis绑定域名
define( 'WP_REDIS_PORT', 16379 );# Redis端口
define( 'WP_REDIS_DATABASE', 1 );# Redis 数据库序号
define( 'WP_REDIS_PASSWORD', 'LtWf@2024' );# Redis密码
//【高修改】不限制域名访问网站,放在 /wp-config.php下
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
//【高修改】禁用WP-Cron.php ,放在 /wp-config.php下
define('DISABLE_WP_CRON', true);
//【高修改】关闭后台主题编辑功能,放在 /wp-config.php下
define('DISALLOW_FILE_EDIT', true);
/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
/* That's all, stop editing! Happy publishing. */
===========================================================