🛡️
主机

大多数网站遭受攻击是通过 .htaccess 中几行代码就能修复的基本漏洞——即 HTTP 安全标头,这是服务器发送给浏览器以执行安全规则的指令:始终使用 HTTPS、不允许他人通过 iframe 嵌入,以及限制脚本来源。本文介绍关键标头及如何在 DirectAdmin 上添加它们。

简而言之:安全标头是最具成本效益的第一道防线,因为无需修改应用代码就能修复常见漏洞。在 .htaccess 中设置只需几分钟,即可立即应用于所有页面。

什么是安全标头?

当浏览器请求页面时,服务器会随内容一起返回 HTTP 响应标头。安全标头是其中一组特定标头,告诉浏览器如何执行安全规则——仅使用 HTTPS、不在 iframe 中渲染页面,或哪些来源可以加载脚本。所有现代浏览器都能理解并自动执行这些标头。

必须设置的关键标头

标头防护对象推荐值
Strict-Transport-Security (HSTS)强制 HTTPS,防止拦截max-age=31536000; includeSubDomains
X-Frame-Options点击劫持(iframe 嵌入)SAMEORIGIN
X-Content-Type-OptionsMIME 嗅探nosniff
Referrer-Policy引用来源泄露strict-origin-when-cross-origin
Content-Security-Policy (CSP)XSS、恶意脚本注入定义允许的来源(见下文)

在 .htaccess 中添加安全标头

在 Apache/LiteSpeed 主机(包括 DirectAdmin)上,将以下代码块添加到网站 public_html 文件夹中的 .htaccess 文件:

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
</IfModule>

保存后服务器会立即应用设置,无需重启,因为 .htaccess 在每次请求时都会被读取。若要生成可直接复制粘贴的自定义标头集,可以使用 AsiaGB 安全标头生成器,它会自动生成适用于 .htaccess 或 Nginx 的指令。

注意 HSTS:一旦启用,浏览器会在 max-age 期间记住只使用 HTTPS。如果您的 SSL 尚未在所有子域名上准备好,请暂时不要添加 includeSubDomains 或 preload——它们很难且需要很长时间才能撤销。

正确使用 Content-Security-Policy

CSP 是减少 XSS 最强大的标头,因为它声明了浏览器可以从哪些来源加载脚本、样式和资源。来自外部注入的未授权脚本将被阻止。基本策略:

Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'none'; frame-ancestors 'self'; base-uri 'self'"

从基本策略开始逐步完善,因为过于严格的策略可能会阻止网站实际使用的资源(如 Google Fonts 或分析工具),导致页面出错。调整时请打开浏览器控制台,查看被阻止的内容,然后逐一允许来源。

验证安全标头是否生效

添加标头后,请确认它们确实被发送:

为什么普通网站也应该设置安全标头

许多人认为安全标头只适用于大型或银行网站,但实际上小型普通商业网站更容易成为攻击目标,因为它们通常缺乏基本防护。自动化机器人会扫描缺少这些标头的网站以寻找突破口——通过 iframe 嵌入欺骗点击,或通过 XSS 漏洞注入脚本。添加几行标头代码是相对于所花时间最具成本效益的风险降低措施。

除了安全性,某些标头还间接有助于提升信任度和 SEO。通过 HSTS 强制 HTTPS 意味着用户不会遇到"不安全"警告,而 Google 已将 HTTPS 作为排名信号。拥有完整安全设置的网站看起来更专业,也能让访客更放心。

新手添加标头的顺序

如果您刚刚开始,不要一次添加所有标头。逐步操作以降低破坏网站的风险:

  1. 从 X-Content-Type-Options 和 X-Frame-Options 开始——这两个最安全,对普通网站几乎没有副作用。
  2. 在 SSL 对每个页面都正常工作后,添加 Referrer-Policy 和 Strict-Transport-Security(暂不启用 preload)。
  3. 最后添加 Content-Security-Policy,因为它必须根据网站实际使用的外部脚本进行调整——从宽松开始逐步收紧。
  4. 每次添加标头后立即测试网站,并查看控制台中是否有被阻止的内容。

逐步操作可以轻松识别是哪个标头导致了问题;如果添加某个标头后网站出现异常,您可以只撤销该标头,而不影响其他已正确设置的标头。

常见错误

总结:.htaccess 中几行安全标头即可修复许多常见漏洞,无需修改应用代码。从 HSTS、X-Frame-Options、X-Content-Type-Options 和 Referrer-Policy 开始,准备好后再添加 CSP。

常见问题解答

在 DirectAdmin 上安全标头应放在哪里?

放在网站 public_html 文件夹中的 .htaccess 文件里。DirectAdmin 直接支持 .htaccess;保存后无需重启服务器即可立即生效。

CSP 会导致网站出错吗?

如果设置过于严格并阻止了网站实际使用的外部资源(如 Google Fonts 或分析工具),则会出错。请从基本策略开始,查看控制台中的阻止记录,然后逐一允许来源。

我应该立即启用 HSTS preload 吗?

不要急于启用。只有在确认每个子域名都支持 HTTPS 后再启用 preload,因为从浏览器预加载列表中移除域名既困难又耗时。

如何验证安全标头是否真正生效?

在 DevTools 网络标签的响应标头中检查,运行 curl -I,或使用在线安全标头检测工具为网站评分并列出缺失的标头。

在 DirectAdmin 中自主控制 .htaccess 和安全设置的主机

AsiaGB 主机让您在 DirectAdmin 中自行编辑 .htaccess 并设置安全标头,附带免费 SSL——起价 500 泰铢/年,配备泰国本地支持团队。

查看主机计划