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 关注
- 137 浏览
添加回答
举报
