(渲染HTML模板時)自動轉義,以防止XSS
<hidden name=」param${ns?htmlattr}」 />
<a href=」${url?urlencode}」>${usercontent?htmlencode}</a>
${rawhtml?htmlliteral}
<script>
var a = 「${str?jsstr}」; //null becomes 「」
var b = ${str?quote,jsstr}; //allow null, render quotes if nonnull
var c = ${func?jsliteral}
var ${func?jsidentifier} = null;
</script>
- jsstr逃脫
\t\b\f\n\r\\\'\"
和</
- jsliteral逃脫
</
- jsidentifier取代非alnum無效字符
- xmlattr轉義
<>&
並過濾不合法的字符UTF-8 - 的HTMLEncode編碼幾乎所有的特殊情況爲這樣的東西
&
- 引號引起字符串來呈現出報價(包括空),或
null
其中的幾個可能不適合安全相關 - 他們只是幫助代碼保持健全。我們選擇哪種逃生模式作爲默認幫助防止XSS - 默認情況下「更安全」?如果我們默認最嚴格的(htmlencode)並從那裏放鬆/切換退出模式會怎樣?
我不想討論所有這些逃生模式的優點 - 無論好壞,它們都存在於我們的代碼庫中。我是否缺少任何模式?有什麼好的閱讀材料?