1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
你可以使用PHP 的json_encode
:
<script type="application/javascript">
? const str = <?=json_encode($str)?>;
</script>
這將返回字符串的 JSON 表示形式,這意味著:
它將用雙引號(hào)引起來
轉(zhuǎn)義可能位于字符串本身中的雙引號(hào)
轉(zhuǎn)義 Unicode 字符
僅憑這段代碼(const str = ...
),XSS 風(fēng)險(xiǎn)絕對(duì)為零。String本身是安全的,可以被JS操作。
然而,如果您像這樣使用該字符串,它可能會(huì)成為 XSS 危險(xiǎn):
eval(str);
出于明顯的原因elem.innerHTML = str;
例如如果str === '<button onclick="sendCookiesToEvilServer()">Click me</button>'
, 或'<style>body { display: none; }</style>'
...該列表并不詳盡
如果您想向用戶顯示該字符串,請(qǐng)選擇.innerText
,.innerHTML
或者查看strip_tags
。
如果由于字符串允許包含一些 HTML 而確實(shí)需要使用innerHTML
,則需要對(duì)其進(jìn)行正確的 XSS 清理。這有點(diǎn)困難,因?yàn)檫@樣,您需要一個(gè)解析器來僅允許/刪除一些 HTML 標(biāo)簽和/或?qū)傩浴?code>strip_tags將允許您在一定程度上這樣做(即您只能允許<b>
例如,但這不會(huì)阻止它<b>
具有屬性onclick="..."
)。
- 1 回答
- 0 關(guān)注
- 128 瀏覽
添加回答
舉報(bào)