エスケープ処理を学び始めたものです、Socket.ioを使ってメッセージをサーバにとばしているのですが、以下のコードではどういった危険があるのかアドバイスをいただきたく思います。。
とりあえず、サーバから送られてきたコードをhtmlEscapeとゆう処理を通して、エスケープしていますが、、
クライアント側
//Head等割愛、input要素等はid=msgobj 出力はid=logobjとしています。 function htmlEscape(s){ var obj = document.createElement('pre'); if (typeof obj.textContent != 'undefined') { obj.textContent = s; } else { obj.innerText = s; } return obj.innerHTML; } var socket = io.connect(); socket.on("server_to_client", function(data){appendMsg(htmlEscape(data.value))}); function appendMsg(text) { $("#logobj").append("<div>" +text + "</div>"); } $("form").submit(function(e){ var message = $("#msgobj").val(); $("#msgobj").val(''); socket.emit("client_to_server", {value :message}); e.preventDefault(); });
サーバ側
var http=require('http'); var socketio = require('socket.io'); var fs = require('fs'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type' : 'text/html'}); res.end(fs.readFileSync(__dirname + '/index.html', 'utf-8')); }).listen(11111); var io = socketio.listen(server); io.sockets.on('connection', function(socket) { socket.on('client_to_server', function(data) { io.sockets.emit('server_to_client', {value :data.value}); });
・サーバにメッセージが送られて、サーバ内で処理が行われている時のセキュリティ面での実装が不明(危険性も不明)
・クライアントからチャットページにリクエストする際、現状ポート番号をそのまま使っているので不安
あなたの回答
tips
プレビュー