【发布时间】:2022-01-21 05:30:15
【问题描述】:
在我的游戏中,我将玩家列表从canvas更改为html,因此出现了一个漏洞,任何玩家都可以给自己起一个可以插入js代码的名字,例如<script>alert(1);</script>这将适用于当玩家出现在玩家列表中时的所有玩家。问题是,如何让 html 不起作用,而玩家输入的所有内容都显示为文本? html 中的 pre 标记对我没有帮助:(
将播放器添加到播放器列表的代码:
const drawLeaderboard = function() {
if (!settings.showLeaderboard || !leaderboard.items) return wjQuery('#leaderboard').css('display', 'none');
else wjQuery('#leaderboard').css('display', 'block');
let text, vip = false,
isMe = false;
const texts = {
all: '',
emoji: ''
};
for (let i = 0; i < leaderboard.items.length; i++) {
if (leaderboard.type == 'text')
text = leaderboard.items[i];
else
text = leaderboard.items[i].name,
isMe = leaderboard.items[i].me,
vip = leaderboard.items[i].vip;
texts.all += `<div class="item"${isMe ? 'style="color: #faa;"' : ''}>${text.trim()}</div>`;
texts.emoji += `<div class="item">${vip ? '????' : ''}</div>`;
}
wjQuery('#leaderboard > .content > .items').html(texts.all);
wjQuery('#leaderboard > .content > .emoji').html(texts.emoji);
}
【问题讨论】:
标签: javascript html jquery