安全 · 第 8 题,共 12 题
访问者输入 <script>alert(1)</script> 作为姓名,Fluid 模板用 {name} 输出它。会发生什么?
有 1 个正确答案。 简单
显示答案
答案
- C 该文本会以可见形式出现在页面上,因为 Fluid 会转义尖括号
解析
Fluid 在输出时会自动用 htmlspecialchars() 转义 {name} 等变量:<script> 变为 <script>,浏览器把这些字符作为文本显示,而不会解释为 HTML。这种自动转义是 TYPO3 模板中防御 跨站脚本(XSS) 最重要的保护措施。如果用 <f:format.raw> 或 {name -> f:format.raw()} 输出该值,这种保护就不再生效,对于用户输入绝不应这样做。Fluid 既不会删除内容,也不会抛出错误;值被保留下来,只是变得无害。