前端安全审计时如何防止XSS攻击?
最近在做项目的安全审计,发现用户输入的内容直接渲染到页面上,担心有XSS风险。比如下面这段代码,把用户昵称直接插进HTML里,会不会被注入脚本?
<div class="user-info">
<h3>欢迎,<span id="username"></span></h3>
</div>
<script>
const username = getUntrustedUserInput(); // 来自URL参数或API
document.getElementById('username').innerHTML = username;
</script>
我试过用textContent代替innerHTML,但有些地方又需要保留简单的HTML格式(比如换行),现在不知道该怎么平衡功能和安全了。
测试下效果。