Node.jsでチャットアプリケーションを立ち上げた
herokuの練習を兼ねてweb上のサンプルをもとに、2014/10に作ったものを下に晒します。
http://sharpbattle.herokuapp.com/
Node.js, Express, socket.ioを利用したチャットアプリケーションで、同時に接続しているセッション間でチャットすることができます。
実はこのアプリケーションには脆弱性が存在します。
<script type="text/javascript">window.location="http://google.com"</script>
や
<script type="text/javascript">alert('aaa')</script>
というコードをチャット欄に入力すると、そのコードが接続しているどのブラウザでも実行されるのです。
つまり、任意のjavascriptのコードが実行されてしまうという脆弱性を持っているのです。
まだ修正していませんので、試したいかたは複数のブラウザを立ち上げてこのページにアクセスして、上記のスクリプトを打ち込んでみてください。
今後の展望としては、herokuの無料postgreSQLサーバーへのチャット履歴の保存、bootstrapによるデザインの向上などを視野に入れています。
最後に、この脆弱性を指摘してくださった友人に感謝します。
参考ページ
jQueryによるそういった入力をエスケープする方法は、以下のサイトが参考になると思います。
またこのアプリケーションを作成するにあたり、下記のサンプルを大幅に参考にさせていただきました。この場を借りて、御礼申し上げます。