Take's Software Engineer Blog

TOEIC200点&プロマネな私が社内公募を経て、ソフトエンジニア&英語部門へ異動して奮闘していく話をしていきます

情報処理安全確保支援士試験 平成31年度 春期 午後1 問1 No.1

https://www.sc-siken.com/pdf/31_haru/pm1_1.pdf

以下のおすすめ問題の解説となります。

良書。

問1 Webサイトの セキュリティに関する次の記述を読んで、設問1〜3に答えよ。

 M社は、従業員数200名の小売業である。コーポレートサイトであるWebサイトA(URLは、https://site-a.m-sha.co.jp/)と、自社の特定のブランドを取り扱うECサイト(以下、ブランドサイトという)を複数運営している。現在運営しているブランドサイトは、WebサイトBからWebサイトFの五つである。Webサイトの開発や運用は自社の開発部で行なっている。
 WebサイトAは、ブランドサイト全体のポータルサイトでもあり、各ブランドのキャンペーン情報などを掲載している。会員専用の機能は有していない。
 WebサイトB(URLは、https://site-b.m-sha.co.jp)は、ブランドBの商品を扱うECサイトで、会員数は10万名である。WebサイトBでは、Cookieを利用したセッション管理を行っている。
 会員情報は、各ブランドサイトで個別に管理している。

 



【各ブランドサイトからWebサイトAへの情報連携】
 今回、各ブランドサイトの売上数を基にした、ブランド別の売れ筋商品情報を、WebサイトA上で表示するとともに、希望があれば、各ブランドサイトの会員に電子メールでも定期的に配信することにし、そのために売れ筋商品情報及び会員情報を取得する機能(以下、情報連携機能という)を実装することにした。具体的な機能は次のとおりである。

機能1 WebサイトAが各ブランドサイトの売れ筋商品情報を取得する。
機能2 希望する会員に電子メールを配信するために、WebサイトAは、当該会員の会員情報を取得する。
    なお、配信の申込みは、WebサイトA上で行う。

 情報連携機能の実装は、開発部のCさんが中心になって進めることになった。まず初めにWebサイトBからWebサイトAへの情報連携を行うために、次の二つのWebAPIをWebサイトBに実装することにした。

  • WebサイトBの売れ筋商品情報を取得可能とするためのWebAPI(以下、API-Xという)
  • WebサイトBの会員情報を取得可能とするためのWebAPI(以下、API-Yという)

 なお、WebAPIで受け渡されるデータは、JSONJavaScript Object Notation)形式にする。Cさんは、API-Yからブランドサイトの会員情報を取得する際、配信を希望する会員の同意を得たいと考えた。そこで、会員情報の取得には、会員の Webブラウザを経由して行う方式を採用することにした。
 WebサイトBからWebサイトAへの情報連携機能を図1に示す。


【情報連携機能の実装についての検討】
  スクリプトZは、(a:Same-Origin)ポリシによって、(b:FQDN)、(c:スキーム)、(d:ポート番号)のいずれかが異なるリソースへのアクセスが制限される。そこで、Cさんは、この制限をう回するためにJSONPJavaScript Object Notation with Padding)を用いることを開発部のD課長に提案した。次は、その時の会話である。

Cさん:API-Yからの会員情報の取得にJSONPを用いるつもりです。
D課長:JSONPは、アクセス先を制限する機能をもたないので、その実装では問題がある。例えば、まず、会員情報を窃取するように攻撃者がスクリプトZを変更して、攻撃者のWebサイトのページに置く。次に、被害者に①特定の操作をさせた上で、そのページにアクセスさせると、攻撃者が被害者の会員情報を窃取できてしまう。
Cさん:JSONPの代わりに何の技術を用いればよいでしょうか。
D課長:CORS(Cross-Origin Resource Sharing)を用いるのがよいだろう。

(1) (a)Same-Origin

Same-Originポリシーとはなんだろう・・・ 

というのは徳丸先生の本に書いてありました。

ブラウザにサイトをまたがったアクセスをさせないためのルールを指します。
ルールのことを同一オリジンって言います。

同一オリジンである条件は3つ

FQDN

・利用するスキーム/プロトコル

・ポート番号

これらが同じ場合に同一オリジンであるということができます

 

(2) (b)FQDN  (c)スキーム  (d)ポート番号

同一オリジンである条件は3つ

FQDN

・利用するスキーム/プロトコル

・ポート番号

これらが同じ場合に同一オリジンであるということができます

 

(3) WebサイトBへのログイン

JSONPは、アクセス先を制限する機能をもたないので、その実装では問題がある。例えば、まず、会員情報を窃取するように攻撃者がスクリプトZを変更して、攻撃者のWebサイトのページに置く。次に、被害者に①特定の操作をさせた上で、そのページにアクセスさせると、攻撃者が被害者の会員情報を窃取できてしまう。

サイトにログインした状態で、攻撃サイトにアクセスさせると情報が抜き取られてしまう脆弱性であるクロスサイトリクエストフォージェリという手法になります

div #breadcrumb div{ display: inline;font-size:13px;}