You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

允许社区提交自定义CSS是否存在CSS注入或其他安全漏洞?

自定义社区CSS的安全防护是否足够?

我基于Laravel开发的网站带有“社区”功能,希望让每个社区能像Reddit的subreddit那样自定义页面样式,因此允许用户通过文本框提交自定义CSS代码。

目前我做了以下两项防护措施:

1. 拦截外部URL

首先对用户输入做基础验证,检查内容中是否包含外部URL(这是CSS注入的常见途径),代码如下:

$text = $request->get('styles');

$hasExternalURL = strpos($text, 'http') !== false || strpos($text, 'www.') !== false;

if($hasExternalURL){
    return response()->json(['error' => 'Error: No external URLs allowed.'], 404);
}

2. 验证CSS有效性

调用W3C的CSS验证API确保用户输入是合法的样式表,代码如下:

$response = Http::get('https://jigsaw.w3.org/css-validator/validator', [
    'text' => $text,
    'output' => 'soap12',
]);
$headersArray = $response->headers();

$validationErrorCount = $headersArray['x-w3c-validator-errors'][0];

if ($validationErrorCount) {
    return response()->json(['error' => 'Errors found in styles. Try using a CSS validator before submitting styles.'], 404);
}

验证通过后,我会将CSS保存为文件并加载到对应社区页面的头部。

想请教这些措施是否足以防范相关漏洞,目前关于允许用户提交自定义样式表的安全资料比较少。


内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:50:26