1 回答

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