iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

久しぶりに自分のデモサイトをみたらXSS被害に!

以前に書いたこの記事。
チャットサーバをHeroku上でデモ用に動かしていたのですがXSS対応していなかったためルームに入るとgithubに飛ばされるような書き込みがされてしまっていました。

iyuichi.hatenablog.jp

ということに気づいてしまったのでルーム名と書き込みに対して無害化するロジックをいれてみました。

この記事をみて組込もうとしたところモジュールの仕様が変わっていたので、
その辺を記事に残しておきます。
コードで一言: node-validatorを使ってみた

node validatorというモジュールからはXSSのsinitizeをしてくれる機能は切り離されたようです。
chriso/validator.js · GitHub

なので今回使ったのは結局こちらgithub.com

インストール
npm install xss-filters --save
使い方(サーバサイド)
var xssFilters = require('xss-filters');
res.send('<h1> Hello, ' + xssFilters.inHTMLData(firstname) + '!</h1>');

かんたんですね。
これでもう大丈夫なはず!

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践