備忘録 blog

Docker/Machine Learning/Linux

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によるそういった入力をエスケープする方法は、以下のサイトが参考になると思います。

nrbm647.blog.fc2.com

またこのアプリケーションを作成するにあたり、下記のサンプルを大幅に参考にさせていただきました。この場を借りて、御礼申し上げます。

creator.cotapon.org