最近公司开始推行安全开发生命周期(SDL),要求我们前端也参加安全培训。但我有点困惑:CSS 也会有安全问题吗?我之前写过类似下面的动态样式,会不会有风险?
.user-theme {
background-color: var(--user-bg-color);
font-family: var(--user-font);
}
这些 CSS 变量是从用户配置里读取后通过 JS 注入的,虽然没直接拼接字符串,但不确定是否安全。安全培训里提到要防范注入类漏洞,但前端这块资料很少,有没有实际经验可以分享?
真正有风险的是直接往
style属性里塞用户输入的内容,比如<div style="background: ${userInput}">这种情况。解决办法:对用户输入做白名单验证,只允许预定义的颜色、字体等值,拒绝任何包含 url()、expression()、calc() 之类的输入。