带有 XSS 转义的 BBCode?

BBCode with XSS escape?

有这样一个字符串:

jaksldhfklajsfdhdkjf[bbcode]img url[/bbcode]kjalhdfk<script>alert(1)</script>sdlfjah

…我希望它变成:

jaksldhfklajsfdhdkjf<img src="img url" />kjalhdfk&lt;script&gt;alert(1)&lt;/script&gt;sdlfjah

…仅使用 JavaScript。

我找不到可以做到这一点的 JS 库。 是否有完整的库或其他方式(或不同的逻辑)来防止不安全输入?

完成您想要做的事情的最佳方法是在解析 BBCode 之前更换擒纵机构。

function escape(s) { // http://escape.alf.nu/
    function html(a) {
        return {'>':'&gt;', '<':'&lt;', '"':'&quot;'}[a] || a;
    }
    s = s.replace(/[<>"]/g, html);
    s = s.replace(/\[bbcode]((?:http:|ftp:\/)\/\/.*?)\[\/bbcode]/g, '<img src="">');
    return s;
}