うまいタイトルが書けなかった。。。
なるべく簡単なタイトルにしたかったですが、下手くそですね。。。
今回は、webサービスを作るにあたって簡単にできるパラメータの確認と修正ができるライブラリについて本当に簡単に紹介します。
主にお手軽に安全性を高める方法として
- パラメータが適切かどうかを確認する
- 害になりそうな文字列を無効化する
の2点があります。もちろんこれだけでは安全性は完全にはなりませんが、最低限です。
前者は、数字しかこないはずのところで文字列が送られてきたり、アルファベットしか許されないところで他の文字がきたりというのを確認することで安全性を高めます。これはブラウザのJavaScript側でもできることですが、悪意を持ったユーザは直接URLに送ってくるため、ここらへんの確認はサーバ側でも必要になります。パラメータの確認をした後にそのまま返しても問題ありませんし、何らかの処理をして別ページに飛ばすこともできます。
後者は送られてきた文字列自体は型等も適切だが、悪意あるコードとかが紛れていたり誤って解釈されうるコードの部分を無効化するために行う処理です。一般的にSanitizeと言います。Sanityが正気という意味なので正気にすると言ったところでしょうか?
今回使うのはExpress-Validatorです。
express-validator
https://www.npmjs.com/package/express-validator
元のURLは上記にあるので、詳細なインストールや実行の仕方はそちらで確認ください。
昔のLegacyな書き方ではcheckBodyとかcheckParamとかでわかりやすかったのですが、最近APIが更新されています。body()とかcookie()と記述するとそのパラメータ関連の確認をすることができるようです。
sanitizeの関数も用意されていてsanitize()とするとbodyとparamsとqueryとcookieのすべてのsanitizeを同様のルールで行うことになります。sanitizeBody等すれば、それぞれにあった適切なsanitizeを用意することができます。
おわりに
一時期は自分で実装しようとしていたこともあったけど、こういうのはライブラリがやはり便利ですからね。積極的に使っていきたいところです。