静态网站安全最佳实践
静态网站所存储的是已经渲染完成的内容,因此它们不需要访问数据库、运行复杂的脚本,或者依赖运行时引擎来响应用户的页面请求。
这在加载速度和安全性方面具有显著优势:静态页面可以大幅减少服务器的负担,并且漏洞也较少。 这也意味着搜索引擎通常会给予静态页面比动态页面更高的排名。
为了在分秒必争的互联网世界中保持竞争力,搜索引擎优化专家正在尽可能地转向静态内容。 静态内容部署已经成为营销战略家们热议的话题,IT 人员也喜欢它带来的更低的维护和安全风险。
但请注意,静态网站并非绝对安全。 如果您计划在网站上部署静态内容,请务必遵循一些最佳实践,以确保其安全。
安全标头
安全标头是 HTTP 响应标头的子集,它包含一组元数据、错误代码、缓存规则等。 Web 服务器将这些信息添加到其服务的内容中,以指示浏览器如何处理接收到的内容。 虽然不是所有浏览器都支持所有安全标头,但有一些非常常见的标头可以提供基本的安全措施,以防止黑客利用漏洞。
X-Frame-Options: SAMEORIGIN
X-Frame-Options
标头旨在禁用或减少 iframe
对您网站的潜在威胁。 黑客可以使用 iframe
来诱导合法点击,并将访问者重定向到他们想要的任何 URL。 防止 iframe
滥用的方法有很多。
开放 Web 应用安全项目 (OWASP) 推荐的最佳实践是使用 SAMEORIGIN
参数,该参数只允许来自相同来源的网站使用 iframe
。 其他选项包括 DENY
(完全禁用 iframe
)和 ALLOW-FROM
(只允许特定 URL 将页面嵌入到 iframe
中)。
您可以查阅 Apache 和 Nginx 的实施指南以获取更详细的信息。
X-XSS-Protection: 1; mode=block
X-XSS-Protection
标头旨在保护网站免受跨站脚本攻击。 此标头可以通过两种方式实现:
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
第一种方式相对宽松,它会过滤从请求到网络服务器的脚本,但无论如何都会渲染页面。 第二种方式则更安全,因为它会在请求中检测到 XSS 脚本时阻止整个页面的加载。 OWASP 推荐使用第二种更安全的方式。
X-Content-Type-Options: nosniff
这个标头可以防止 MIME “嗅探”——浏览器可以扫描内容并以与标头指定不同的方式来响应。 当此标头存在时,浏览器必须按照标头指示设置内容类型,而不是通过提前“嗅探”内容来推断类型。
如果您使用此标头,请务必仔细检查您网站上的每个静态页面是否都正确设置了内容类型。
Content-Type: text/html; charset=utf-8
自从 HTTP 协议 1.0 版本以来,这一行就已经添加到 HTML 页面的请求和响应标头中了。 它确保所有的标签都可以在浏览器中正确渲染,并在网页上显示结果。
使用 TLS 证书
SSL/TLS 证书对于任何网站来说都是必不可少的,因为它允许网络服务器通过安全的 HTTPS 协议加密传输到网络浏览器的数据。 这样,即使数据在传输过程中被截获,也无法被读取,这对于保护用户隐私和网站安全至关重要。 虽然静态网站不存储访问者的个人信息,但保护他们请求的信息免受窥探仍然至关重要。
大多数网络浏览器都要求网站使用加密标记为安全网站,这对于寻求遵守欧盟通用数据保护条例(GDPR)的网站是强制性的。 虽然法律没有明确规定必须使用 SSL 证书,但这是满足法规中隐私要求的最佳方法。
在安全性方面,SSL 证书允许权威机构验证网站的所有权,并防止黑客创建虚假网站。 使用 SSL 证书可以使网站访问者检查发布者的真实性,并确保他们在网站上的活动不会被监视。
好消息是证书并不昂贵。 实际上,您可以从 ZeroSSL 或 SSL 商店 免费获取。
部署 DDoS 防护
分布式拒绝服务(DDoS)攻击现在越来越常见。 在这种类型的攻击中,一组分布式设备被用来发送大量的请求来淹没服务器,直到服务器瘫痪并停止工作。 即使您的网站是静态的,如果措施不当,其网络服务器也可能成为 DDoS 攻击的受害者。
在网站上实施 DDoS 防护最简单的方法是使用安全服务提供商来处理所有网络威胁。 这些服务提供诸如入侵检测、防病毒服务和漏洞扫描等,您可以几乎不必担心安全威胁。
这种全面的解决方案可能价格不菲,但也有价格更低、更专业的解决方案,例如 DDoS 防护即服务(DPaaS)。 您可以向托管服务提供商咨询他们是否提供此类服务。
更经济的选择是基于云的 DDoS 防护服务,例如 Akamai、 Sucuri 或 Cloudflare 提供的服务。 这些服务能够对 DDoS 攻击进行早期检测和分析,并过滤和重定向这些攻击,即将恶意流量转移到您的站点之外。
在考虑 DDoS 防护解决方案时,您应该注意其网络容量:此参数表示防护可以承受的攻击强度。
避免使用存在漏洞的 JavaScript 库
即使您的网站是静态的,它仍然可能使用存在安全风险的 JavaScript 库。 通常认为,大约 20% 的这些库会使网站更容易受到攻击。 幸运的是,您可以使用 漏洞数据库 来检查特定的库是否安全。 在该数据库中,您可以找到许多已知漏洞的详细信息和指导。
除了检查特定库的漏洞之外,您还可以遵循 JavaScript 库的最佳实践列表,这些实践有助于降低潜在的安全风险:
- 不要使用外部库服务器。 相反,将库存储在托管您网站的同一服务器上。 如果必须使用外部库,请避免使用黑名单服务器中的库,并定期检查外部服务器的安全性。
- 对 JavaScript 库使用版本管理,并确保使用每个库的最新版本。 如果版本管理不是一个可行的选项,至少您应该使用没有已知漏洞的版本。 您可以使用 Retire.js 来检测是否存在易受攻击的版本。
- 定期检查您的网站是否使用了您不知道的外部库。 这样,您可以了解到黑客是否向您注入了指向不需要的库供应商的链接。 静态网站不太可能发生注入攻击,但定期检查也没有坏处。
实施备份策略
静态网站应该对其内容进行安全备份。 备份副本必须安全存储且易于访问,以便在发生崩溃时可以恢复网站。 备份静态网站的方法有很多,但大致可以分为手动备份和自动备份两种类型。
如果您的网站内容不经常更改,那么手动备份策略就足够了。 您只需记住在更改内容时进行新的备份。 如果您有一个控制面板来管理您的主机账户,您很可能会在控制面板中找到进行备份的选项。 如果没有,您可以随时使用 FTP 客户端将所有网站内容下载到本地设备,在那里您可以确保其安全并在必要时进行恢复。
当然,如果您想尽量减少网站管理任务,那么自动备份选项更可取。 但是,自动备份通常由托管服务提供商作为高级功能提供,这会增加维护网站安全的总成本。
您可以考虑使用云对象存储进行备份。
使用可靠的托管服务提供商
可靠的网络托管服务对于确保您的网站平稳快速运行,以及确保网站不被黑客攻击至关重要。 大多数网络托管评论都会向您展示关于速度、正常运行时间和客户支持的数据和比较,但是在考虑网站安全性时,应该仔细关注以下方面,并且在选择服务之前应该询问您的提供商:
- 软件安全:您应该了解他们如何处理软件更新; 例如,是否所有软件都会自动更新,或者每个更新都会在部署之前进行测试。
- DDoS 防护:如果托管服务包含此类防护,请询问其实施方式的详细信息,以验证其是否符合您的网站要求。
- SSL 的可用性和支持:由于在大多数情况下证书由托管服务提供商管理,您应该检查其提供的证书类型以及证书续订策略。
- 备份和恢复:许多托管服务提供商提供自动备份服务,这非常好,因为它实际上可以让您忘记备份,存储备份和保持更新。 但请考虑到此类服务的成本,并权衡它与自己备份内容所需的工作量。
- 恶意软件保护:可靠的托管服务提供商应该通过定期执行恶意软件扫描和监视文件完整性来保护其服务器免受恶意软件的侵害。 在共享主机的情况下,主机提供商最好使用账户隔离,以防止恶意软件感染在相邻网站之间传播。
- 防火墙保护:托管服务提供商可以通过部署防火墙来阻止恶意流量,从而提高其托管网站的安全性。
您可以查看一些可靠的静态网站托管平台。
执行强密码策略
由于静态网站没有数据库或内容管理系统,因此需要管理的用户名和密码较少。 但是,您仍然需要对用于更新静态内容的主机或 FTP 账户实施密码策略。
以下是有关密码的一些良好实践:
- 定期更换密码。
- 设置最小密码长度。
- 使用大小写字母与特殊字符和数字的组合。
- 避免通过电子邮件或短信传输密码。
此外,必须从一开始就更改管理账户的默认密码,因为这是一个黑客很容易利用的常见错误。 不要害怕丢失密码; 使用密码管理器安全地管理它们。
总结
几年前,动态内容是主流,因为一切都可以轻松更改和更新,允许在几秒钟内重新设计整个网站。 但是,随着速度成为最重要的因素,静态内容突然又变得流行起来。
从这个角度来看,应该重新评估所有网站安全实践,当然需要考虑的方面较少,但您不应该放松警惕。 这份最佳实践清单肯定会帮助您制定自己的清单,以确保您的静态网站安全无虞。