WordPress模板插件定制

您现在的位置是:首页 > WordPress教程WordPress教程

WordPress HSTS设置

查看 WP集市 的更多文章WP集市 2025-09-08 【WordPress教程】 1358人已围观

  1. 首先咱得唠唠HSTS是个啥玩意儿。你想象一下啊,平时咱用WordPress建站,网址开头有时候是http://有时候是https://,用户手动输入时经常漏掉那个"s"。HSTS就是帮浏览器记住"这网站必须用https打开",下次哪怕用户输http也会自动跳转https。这玩意儿像给网站加了道防盗门,告诉浏览器"以后只走加密通道"。

  2. 为什么要折腾这个?去年我帮客户修网站,就因为没开HSTS,被劫持插了段挖矿代码。浏览器收到HSTS头后会强制https,连第一次访问都不给http机会——专业点叫"阻止降级攻击"。WordPress后台虽然能设置https,但缺了HSTS还是可能被钻空子。

  3. 现在上手实操。最简单的方法是在wp-config.php里加代码,找到那个写着"Happy Blogging"的地方,在上面插入:

    define('FORCE_SSL', true);
    define('FORCE_SSL_ADMIN', true);
    header("Strict-Transport-Security: max-age=31536000; includeSubDomains");

    这段代码让WordPress强制SSL并且告诉浏览器"一年内都给我用https"(31536000秒是一年)。includeSubDomains意味着连子域名也保护,比如cdn.yoursite.com也会强制https。

  4. 不过有时候这样会报错,因为header()函数必须在任何输出前调用。这时候可以用.htaccess方案,在WordPress根目录的.htaccess文件里,在#BEGIN WordPress之前加:

    <IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    </IfModule>

    max-age调到两年更安全,preload是申请加入浏览器内置HSTS列表的开关(这点后面细说)。

  5. 注意啊,要是你用Nginx服务器,得去站点配置文件里加:

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    那个always参数很关键,确保所有响应都带上HSTS头,包括错误页面。

  6. 现在说个坑:preload清单。浏览器其实有个内置的必须用https的网站列表,比如google.com就在里面。你申请加入这个列表后,即使用户第一次访问你网站,浏览器也会直接走https。但一旦提交就很难撤销,需要等浏览器更新版本(可能几个月)。所以建议先用max-age=300测试五天,确认没问题再改回长期值。

  7. 测试方法挺简单的,打开浏览器按F12,选Network标签,刷新页面看响应头。要是看到Strict-Transport-Security就算成功。也可以用curl命令检查:

    curl -I https://yourdomain.com

    返回结果里应该有一行"Strict-Transport-Security: max-age=31536000"。

  8. 最后提醒个事儿:如果之前网站用http提供服务,启用HSTS后老用户可能被锁在外面。这时候需要先部署https并返回HSTS头,但max-age先设成短时间,等确保所有资源都没问题了再延长。就像给网站做手术,得先打麻药再动刀,直接一刀切会出问题。

  9. 其实WordPress有插件能搞定这个,比如"HTTP Strict Transport Security (HSTS)"插件。但我不太推荐,多一个插件就多一个攻击面。代码就几句话,自己动手更踏实。安全这件事啊,有时候简单粗暴最有效。

  10. 总结一下啊,HSTS就像给网站训练条件反射:浏览器见到你就自动切https。对于WordPress这种常被盯上的目标,少个漏洞就少个被黑的风险。别看就几行代码,关键时刻能省下不少修网站的钱——毕竟安全这件事,预防总比补救来得便宜。

Tags:

WordPress模板插件定制

WP集市

V管理员
文章 723 篇 | 评论 0 次
最新文章