課題1 セキュリティ課題・脆弱性体験
最初の課題は、Webサービスにおいて重要なセキュリティに関する課題です。
Webサービスは自分のためのアプリケーションや、組織内でのみ利用するアプリケーションとは異なり
- 不特定多数のユーザーが利用する
という特徴があります。
例えるなら、屋外に放置された自動販売機のようなものです。厳重にセキュリティ対策をしなければ、簡単に重要なデータが盗み出されてしまったり、サービスを破壊されてしまったりすることになります。
この課題では、代表的な3種の脆弱性とその対策についてお伝えします。
1. クロスサイトスクリプティング(XSS)
クロスサイトスクリプティング(Cross Site Scripting, XSS)とは、掲示板、SNSなどを代表とするユーザーが入力するコンテンツを利用した攻撃です。正しい対策を行われていないと、任意のJavaScirptを潜り込ませることが可能になってしまいます。
筆者の体験ですが、15年ほど前のある大手オークションサイトではこの対策が行われておらず、ある商品データを閲覧するといつの間にか他のwebサービスにジャンプしていたり、本来有料だった画像掲載が無料で自由自在に行われていたりしました。
この脆弱性を利用した代表的な攻撃方法としては、攻撃対象と同じサービスを装った全く同じ見た目の偽サイトへのリダイレクトを通じて、個人情報などを入力させるものなどがあります。
2. SQLインジェクション
クロスサイトスクリプティングが、任意の「JavaScript」を実行させるものであるの対して、SQLインジェクションは任意の「SQL」を実行させる攻撃方法です。
フォームの入力値を利用してSQLを組み立てている場合、適切な処理をしないとそこから任意のSQLが実行されてしまう可能性があります。
- 全てのデータを削除
- 他人のふりをしてログインする
- 不正に管理者権限を取得する
などを通じて甚大な被害に繋がることになります。
クロスサイトリクエストフォージェリ(Cross Site Request Forgery, CSRF)
クロスサイトリクエストフォージェリは、正規のフォームを通さずにデータの書き込みなど本来フォームからでなければ実行できない処理が行う攻撃方法です。
いわゆる「なりすまし」による書き込みなどを通じて、本人が知らないうちに詐欺サイトなどへと第三者を誘導することなどが可能になってしまいます。
シンプルな攻撃ですが、
- 誘導されたユーザーの詐欺被害
- なりすまされたユーザーの信用被害
の双方につながることになります。