Webアプリケーション開発に欠かせない、Web APIとその脆弱性 – Webセキュリティ

こんにちは、穂苅と申します。
前回は、CORS(Cross-Origin Resource Sharering)について詳しく紹介していきました。日本語で「オリジン間リソース共有」と呼ばれ、異なるオリジンでもリソースが共有できるようにした機構のことです。ご興味のある方はぜひご覧ください。

今回は、Web APIについて取り上げます。近年のWebアプリケーションでは欠かせない手法ですので基本から見ていきたいと思います。

目次

Web API と Web アプリケーション

現在のWebアプリケーションでは、Web APIが多く利用されています。
Web APIというのは、通常のWebアプリケーションとは異なり、様々な機能の処理を実行したうえで、表示用の画面ではなくデータのみを返すものです。
Web APIの利用が進んだ背景として、アプリケーション開発においてJavaScriptの重要性が増加したことや、スマートフォンアプリと通信して機能を提供するサーバ側の実装形態として適していることがあります。もともとはAjax形式だったものが、現在ではJSON(JavaScript Object Notation)というデータ形式を利用しています。

もう1つ、JavaScriptのXMLHttpRequestは、同一オリジンポリシーの制約があったため、異なるオリジンからのデータ取得ができないという課題がありました。そこで前回取り上げたCORSが出てきたのですがCORSが出る前にもいくつかの方法が考案されており、代表的な方法の1つがJSONP(JSON with Padding)というものです。これは、XMLHttpRequestではなく、script要素を用いて外部のJavaScriptを直接実行する事によりデータを取得するというものです。

多くのSaaSサービスでもデータの受け渡しを行うためのWeb APIを提供しているため、ユーザー企業でも社内システムや社内データを整備するためなどに使用しています。

Web API における脆弱性

便利なWeb APIですが、Web APIで生じやすい脆弱性も存在します。代表的なところは以下になります。
・JSONエスケープの不備
・JSON直接閲覧によるXSS
・JSONPのコールバック関数名によるXSS
・Web APIのクロスサイト・リクエスト・フォージェリ
・JSONハイジャック
・JSONPの不適切な利用
・CORSの検証不備
いくつか見ていきます。

JSONエスケープの不備

APIにおいて、JSONの文字列生成時のエスケープ処理に不備があると、意図しないJavaScriptがJSONデータに混入する場合があります。これによって、Webアプリケーションにおいて不正なJavaScriptライブラリが実行されてしまうという問題が生じます。
これは、適切なエスケープ処理が行われていない場合や、JSONの評価にeval関数などを用いている・JSONPを用いているという場合に発生します。
対策として、文字列連結によるJSONデータ生成ではなく信頼できるライブラリを用いてJSONを生成する、eval関数ではなくJSON.parseなどの安全なAPIでJSONを解釈するなどが必要です。

JSON直接閲覧によるXSS

XSSはクロスサイトスクリプティングのことで、Webサイトの脆弱性を悪用し悪意のあるスクリプトを埋め込みユーザー側のブラウザで実行させるサイバー攻撃のことです。JSONを返すWeb APIは、通常XMLHttpRequestによるアクセスを想定したものですが、APIが返すレスポンスデータをブラウザで直接閲覧させることによる攻撃が可能になる場合があります。
対策として、MIMEタイプを正しく定義する、レスポンスヘッダ X-Content-Type-Options: nosniff を出力、などを行うことが必要です。

Web API やセキュリティ知識を詳しく知りたい場合は、徳丸本と徳丸試験がおすすめ

今回は、Web APIの脆弱性について紹介しました。
アプリケーション開発者は正しい知識を持って実装を行わないと、影響の大きな事故になってしまう可能性もあります。
こういったWebセキュリティ関連の知識について、詳しくなりたい場合は、徳丸本を学ぶことをおすすめします。
徳丸本は、Webセキュリティに関する基本知識が網羅されています。セキュリティは正確に体系立てて理解をしていかないと、システムや会社にとって致命的な問題に繋がります。これらの知識を身に着けたエンジニアとして活躍されていく方にはおすすめです。

そして、学んだあとは理解を確認するために徳丸試験でチェックしてみると理解度が可視化されるため、
ぜひチャレンジしてみてください。

【徳丸本】
体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版 脆弱性が生まれる原理と対策の実践
徳丸浩の Web セキュリティ教室
【徳丸試験】
ウェブ・セキュリティ基礎試験 ( 徳丸基礎試験)

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次