精品应用软件与实用教程
Litespeed 添加自定义标头
在Litespeed Web服务器中,创建自定义标头(HTTP Headers)并设置安全标头,可以通过在服务器配置文件或者控制面板中的“HTTP Headers”选项进行。以下是步骤说明以及如何设置常见的安全标头。
在某些情况下,您可能需要设置自定义响应标头,例如Cache-Control
标头或Expire
标头。下面是一些示例,向您展示如何完成此操作。
浏览器缓存
登录 WebAdmin 控制台,导航到虚拟主机 > 上下文,然后创建一个新的上下文。
在新创建的上下文中,将类型设置为Static
。
对于我们的浏览器缓存,我们希望定位 JavaScript 和 CSS 文件,因此我们可以使用正则表达式来匹配URI设置中这些类型的所有文件,如下所示:
exp:^.*(css|js)$
如果愿意,您可以添加更多静态文件扩展名,例如:
exp:^.*(css|gif|ico|jpeg|jpg|js|png|webp|woff|woff2|fon|fot|ttf)$
设置以下内容:
- 位置:(
$DOC_ROOT/$0
我们需要这个,$0
因为URI使用正则表达式) - 可访问:
Yes
- 启用过期:
Yes
将Expires by Type设置为以下内容(15552000
秒等于 180 天):
application/javascript=A15552000, text/css=A15552000
如果愿意,您可以向Expires by Type添加更多类型 ,例如:
text/css=A15552000, image/gif=A15552000, image/x-icon=A15552000, image/jpeg=A15552000, application/x-javascript=A15552000, text/javascript=A15552000, application/javascript=A15552000, image/png=A15552000, image/webp=A15552000, font/ttf=A15552000, font/woff=A15552000, font/woff2=A15552000, application/x-font-ttf=A15552000, application/x-font-woff=A15552000, application/font-woff=A15552000, application/font-woff2=A15552000
将Header Operations设置为以下内容:
unset Cache-control
set Cache-control public, max-age=15552000
该unset cache-control
行会删除先前的缓存控制标头,然后在下一行设置新的缓存控制标头。
X-Powered-By
如果需要添加更多标头,则语法和用法与 Apache 的支持操作的mod_headers指令类似。
以下是添加标题的示例X-Powered-By
:
设置以下内容:
- 网址:
exp:^.*(css|js)$
- 位置:(
$DOC_ROOT/$0
我们需要这个,$0
因为URI使用正则表达式) - 可访问:
Yes
- 标头操作:
set X-Powered-By OpenLiteSpeed
。
设置安全标头
安全响应标头用于客户端和服务器端。它们是指示浏览器如何防范威胁、控制设备功能访问、保护连接以及管理站点间信息流的指令。
它们可以增强对点击劫持、cookie 劫持、MIME 类型攻击以及许多其他场景的保护。
以下是最常用的安全标头的概述:
Content-Security-Policy
:此安全标头可防止跨站点脚本 (XSS) 攻击、点击劫持和其他代码注入攻击。Strict-Transport-Security
:HTTPStrict-Transport-Security
(HSTS)标头保护网站免受协议降级攻击和 cookie 劫持。X-Content-Type-Options
:此标头可防止基于 MIME 类型不匹配的攻击。X-Frame-Options
:此标头通过控制是否可以在框架或 iframe 中呈现内容来提供点击劫持保护。X-XSS-Protection
:此标头允许网站管理员启用浏览器内置 XSS 保护的某些功能,从而帮助保护网站免受 XSS 攻击。Referrer-Policy
:此安全标头通过控制请求中包含的引荐来源信息量来帮助保护用户的隐私。Feature-Policy
:此标头提供了一种允许和拒绝使用各种浏览器功能和 API 的机制,以防止不安全或侵入性的网页功能。Access-Control-Allow-Origin
:此标头通过指定哪些网站被允许访问您页面的资源来防止跨源资源共享 (CORS) 攻击。- Cookie
Secure
标志和HttpOnly
标记:这些 cookie 属性提供针对跨站点脚本 (XSS) 和会话劫持的保护。
添加安全标头
通过 WebAdmin 控制台添加
导航到Web 管理 > 配置 > 您的虚拟主机 > 上下文:
- 单击添加按钮
- 选择静态类型
- URI =
/
(如果您愿意,可以更改) - 位置=
$DOC_ROOT/
(您可以根据需要更改) - 可访问=
Yes
- 额外标题=
Strict-Transport-Security: max-age=31536000; includeSubDomains Content-Security-Policy "upgrade-insecure-requests;connect-src *" Referrer-Policy strict-origin-when-cross-origin X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff X-XSS-Protection 1;mode=block Permissions-Policy: geolocation=(self "")
- 单击保存按钮
- 优雅重启
直接添加到配置文件中
通过 ssh 登录到您的服务器并找到您的 OLS 虚拟主机配置文件。您可以example
在 找到预安装的 vhost 配置文件/usr/local/lsws/conf/vhosts/Example/vhconf.conf
。
其他虚拟主机通常可以在 下找到/usr/local/lsws/conf/vhosts/
。使用您选择的编辑器(例如 Vi 或 Nano)打开虚拟主机的配置文件。
context / {...}
部分并手动添加该部分中的额外标头。保存配置文件,然后通过以下方式正常重启 Web 服务器systemctl restart lsws.
验证标头
检查您网站上某个页面的标头,并验证您是否看到了所有预期的标头。
关于 CORS 标头
该Access-Control-Allow-Origin
标头通过指定哪些网站被允许访问您页面的资源来防止跨源资源共享 (CORS) 攻击。
为CORS 标头分配最简单(也是最宽松)的值是*
,这表示任何网站都可以访问您页面的资源。如果采用更保守、更安全的方法,您应仅允许通过特定的受信任网站进行访问。示例:
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: https://trusted-example.com
支持更多 CORS 方法
默认情况下,CORS 支持以下方法:PUSH
、GET
和HEAD
。如果您还想支持OPTIONS
和DELETE
怎么办?
您可以简单地将其他方法附加到Extra Headers,如下所示:Access-Control-Allow-Methods GET, POST, OPTIONS, DELETE
。
再次尝试验证,这次发送DELETE HTTP
方法。您应该会看到200
响应。
详细了解 CORS
如需深入了解 CORS 标头和方法,请参阅此 Mozilla 文档。
参见:
了解有关安全标头的更多信息
有关 HTTP 标头的更多信息,请参阅Mozilla 文档。
Scott Helme 的这些文章提供了有关我们在此处提到的所有安全标头的详细信息:
设置自定义标头步骤
通过Litespeed Web服务器控制面板:
登录到Litespeed控制面板(如CyberPanel)。
进入网站的配置页面,找到“HTTP Headers”选项。
在这里可以添加自定义标头,输入所需的安全标头和对应的值。
通过.htaccess文件:
如果你没有直接访问服务器配置的权限,或者你使用的是共享主机,可以通过修改网站根目录下的.htaccess文件来设置标头:
Header set X-Content-Type-Options "nosniff" Header set X-Frame-Options "SAMEORIGIN" Header set X-XSS-Protection "1; mode=block" Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header set Content-Security-Policy "default-src 'self'"
设置常见安全标头:
X-Content-Type-Options: 防止浏览器对MIME类型进行错误推断,避免某些攻击形式。
Header set X-Content-Type-Options "nosniff"
X-Frame-Options: 防止网站被嵌入到iframe中,保护网站免受clickjacking攻击。
Header set X-Frame-Options "SAMEORIGIN"
可以替换为DENY以完全禁止嵌入。
X-XSS-Protection: 启用浏览器内置的跨站脚本(XSS)保护机制。
Header set X-XSS-Protection "1; mode=block"
Strict-Transport-Security (HSTS): 强制浏览器通过HTTPS连接,防止中间人攻击。
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Content-Security-Policy (CSP): 限制网站可以加载的资源,防止XSS和数据注入攻击。
Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
测试和验证
你可以使用在线工具如 SecurityHeaders.io 来检查是否正确配置了这些安全标头。
这些安全标头可以极大提高网站的安全性,尤其是防止跨站脚本攻击(XSS)、点击劫持(Clickjacking)和其他常见的Web安全问题。