Skip to content

Commit bfb747d

Browse files
committed
properly implementing xss protection
still serverside which isn't the best but it'll do for now
1 parent de070fd commit bfb747d

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/client/scripts/Chat.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,9 @@ Chat = class Chat {
5959
}
6060

6161
log(message) {
62-
const replacements = [[/&/g, "&amp;"], [/</g, "&lt;"], [/>/g, "&gt;"], [/"/g, "&quot;"]];
63-
for (const replacement of replacements)
64-
message = message.replace(replacement[0], replacement[1]);
65-
66-
this.chatDiv.append(`<span>${message}<br></span>`);
62+
let elem = document.createElement("div");
63+
elem.innerHTML = message+"<br>";
64+
this.chatDiv.append(elem);
6765
this.scrollToBottom(this.chatDiv);
6866
}
6967

src/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ io.sockets.on("connection", function (socket) {
9595
emit(["kicked", reason]);
9696
},
9797
message: function (msg) {
98+
let message = msg.extra[0].text
99+
100+
const replacements = [[/&/g, "&amp;"], [/</g, "&lt;"], [/>/g, "&gt;"], [/"/g, "&quot;"]];
101+
for (const replacement of replacements)
102+
message = message.replace(replacement[0], replacement[1]);
103+
msg.extra[0].text = message;
104+
98105
emit(["msg", convert.toHtml(msg.toAnsi())]);
99106
},
100107
experience: function () {

0 commit comments

Comments
 (0)