HTML5プロフェッショナル認定試験レベル2 例題解説

例題解説とその内容については、例題提供者の監修です。内容や試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了承ください。
例題解説のご提供者さまを募集中です。LPI-Japan事務局までぜひご投稿ください。選ばれた方の例題解説は本サイトに掲載させていただきます。

2.9 セキュリティモデル

例題9.5 「2.9.1 クロスオリジン制約とCORS」
レベル2の出題範囲「2.9.1 クロスオリジン制約とCORS」からの出題です。
クロスオリジンのサーバーにXMLHttpRequestを使ってPUTリクエストを送ったところ、適切に処理が行なわれなかった。 リクエストには 適切な"Origin"ヘッダと"Access-Control-Request-Method: PUT" ヘッダを追加している。 また、サーバからのレスポンスには適切な"Access-Control-Allow-Origin"ヘッダと"Access-Control-Allow-Methods: GET,POST,PUT" ヘッダが追加されていた。原因として考えられるものを選択しなさい。
  • Access-Control-Request-MethodとAccess-Control-Allow-Methodsの値が一致していない。
  • XMLHttpRequestではPUTリクエストを送信できない。
  • XMLHttpRequestでは任意のヘッダを追加できない。
  • レスポンスに Access-Control-Allow-Headersヘッダ が追加されていない。

※この例題は実際のHTML5プロフェッショナル認定試験とは異なります。
例題公開日:2018年9月4日

答えはこちら

正解 D
クロスオリジンのサーバーにGET,POST,HEAD以外のメソッドでリクエストを送る場合、CORSに対応したWebブラウザでは"Access-Control-Request-Method"ヘッダを追加する必要があります。
ところが、"Access-Control-Request-Method"は標準ではないヘッダーですので、"Access-Control-Request-Headers"ヘッダーも追加して"Access-Control-Request-Method"ヘッダーを使うことを通知する必要があります。

"Origin"ヘッダーも指定する必要があるため、PUTやDELETEのようなメソッドでリクエストを送信するには、"Origin","Access-Control-Request-Headers","Access-Control-Request-Method"を指定し、レスポンスにも"Access-Control-Allow-Origin","Access-Control-Allow-Headers","Access-Control-Allow-Methods"が追加されていないとWebブラウザで適切に処理されません。

その他の選択肢については以下の通りです。
AはAccess-Control-Allow-Methodsの値に、使用するメソッドが含まれていれば完全に一致していなくても問題ありません。 B,CはXMLHttpRequestではGET,POST以外のメソッドも送れますし、setRequestHeaderメソッドで任意のヘッダを追加できます。

出題範囲の詳細

例題解説の提供:株式会社クリーク・アンド・リバー社
HTML5レベル2認定者 高井 歩 氏

 
 
例題9.4 「2.9.1 クロスオリジン制約とCORS」
レベル2の出題範囲「2.9.1 クロスオリジン制約とCORS」からの出題です。
Webサイトをインターネットに公開したところ、Webフォントが要素に適用されていないことが判明した。HTML/CSSの記述内容に間違いが無い場合、原因として関係の無いものはどれか選択しなさい。
  • OpenTypeフォントを指定しているため。
  • 別ドメインからWebフォントを読み込んでいるため。
  • Webフォントを取得するレスポンスに適切なAccess-Control-Allow-Originヘッダーが追加されていないため。
  • httpsで読み込んだページからhttpでwebフォントを読みこもうとしているため。

※この例題は実際のHTML5プロフェッショナル認定試験とは異なります。
例題公開日:2018年7月17日

答えはこちら

正解 A
ドメイン(B)やのスキーム(D)が異なるサイトはクロスドメインになります。
クロスオリジンでは、特に設定されていない場合にWebフォントの読み込みに制限があります。
クロスドメインの場合はサーバ側で要求されたリソースのレスポンスに、Access-Control-Allow-Originヘッダー(C)を追加する必要があります。
自分の管理外のサーバでヘッダーを付けられない場合は、同一オリジンでアクセスできる場所にフォントファイルを設置することになります。

現在の一般的なブラウザでは、OpenTypeフォントの使用(A)に問題はありません。

出題範囲の詳細

例題解説の提供:株式会社クリーク・アンド・リバー社
HTML5レベル2認定者 高井 歩 氏

 
 
例題9.3 「2.9.2 セキュリティモデルとSSLの関係」
レベル2の出題範囲「2.9.2 セキュリティモデルとSSLの関係」からの出題です。
スマートフォンのWebブラウザでGeolocation APIを使用して位置情報を取得しようとしたところ、位置情報を取得できなかった。理由として考えられるものを選択しなさい。
  • 無線LANがオフになっている
  • httpで取得された画像がWebコンテンツに含まれている
  • 移動速度が速すぎる
  • WebコンンテンツがセキュアなHTTPSによって取得されている

※この例題は実際のHTML5プロフェッショナル認定試験とは異なります。

答えはこちら

正解 B
httpsで取得された安全なコンテンツと、httpで取得された安全とは言えないコンテンツが混在している状況をMixed Contentと言います。
HTMLはhttpsで取得しているのに、含まれる画像やJavaScriptはhttpで取得しているような状況です。

Mixed Contentでは、使用できるAPIに制限があります。
Level.2の出題範囲に含まれるAPIでは、Geolocation APIやStorage API、Service Workersが該当します。

制限される機能は以下のページが参考になります。
https://developer.mozilla.org/ja/docs/Web/Security/Secure_Contexts/ features_restricted_to_secure_contexts

ブラウザによっては、Mixed Contentではロケーションバーに警告が表示されます。
既存のWebサイトをSSL/TLSに対応させた際に、画像やJS,CSSなどリソースのURLを書き換え忘れてMixed Contentになりやすいので注意が必要です。

出題範囲の詳細

例題解説の提供:株式会社クリーク・アンド・リバー社
HTML5レベル2認定者 高井 歩 氏

 
 
例題9.2 「2.9.2 セキュリティモデルとSSLの関係」
レベル2の出題範囲「2.9.2 セキュリティモデルとSSLの関係」からの出題です。
ブラウザのセキュリティに関して正しい記述を全て選びなさい。
  • HTTPS用のページにおいてもHTTPで読みこんだ画像に関しては問題なく表示される。
  • Mixed Content とはHTTPとHTTPSの要素が混在する状態をいう。
  • グローバルスコープで利用できる isSecureContext の値を用いることで、そのページ自身が安全なコンテキストの中にいるかどうか確かめることができる。
  • アクセスを安全なコンテキストのみに制限しているAPIがある。

※この例題は実際のHTML5プロフェッショナル認定試験とは異なります。

答えはこちら

正解 B、C、D
A. 間違いです。
HTTPSのページの中にHTTPで読み込むものが混ざっていると改ざんの危険性があるのでWebブラウザから警告を受けます。 これは中味には関係ありません。

B. 正しい記述です。
このようなHTTPSで読み込む要素とHTTPで読み込む要素が混在する状態を Mixed Content と呼びます。

選択肢AとBは Mixed Content に関する選択肢です。
Mixed Content では、たとえ主になるHTMLファイルをHTTPSで安全に読み込んでいたとしても、その他のファイルの取得をHTTPでおこなった結果、Man-in-the-middle (中間者)攻撃などで改竄されてしまう可能性があります。するとそのファイルから攻撃者がHTMLの内容を書き換えられる手段があるため、安全性を確保できません。したがって現在のWebブラウザでは警告が表示されるようになっています。

C. 正しい記述です。
isSecureContext はウィンドウオブジェクトの読み取り専用のプロパティでMan-in-the-middleコンテキストが安全なコンテキストを必要とする機能が使用可能かどうかを示します。 値はtrueが安全なコンテキスト、falseが安全なコンテキスト外となります。

D. 正しい記述です。
オフラインアプリケーションAPIの次の規格とも言える Service Worker API などは安全なコンテキストを必要とします。

選択肢CとDは、安全なコンテキストに関する選択肢です。
安全なコンテキストとは、以下のどちらかの状態を表します。
・ Webブラウザが動作しているコンピュータ、つまりローカルから読み込んだページ目安としては、表示しているページのURLが、http://localhostや、file:// から始まっている場合になります。
・ https://やwss://など、安全な通信によるページ。

気になるのは Mixed content と window.isSecureContext プロパティとの関係ですが、明文化された文書による定義は無いようです。
実際にファイルを作成して検証した結果、FirefoxとChromeでは Mixed content であるかどうかは、isSecureContext プロパティの内容に影響を与えませんでした。
IE 11,Safariでは、isSecureContext プロパティが未実装のため確認できません。

安全なコンテキストに関する詳しい説明は以下の Mozzilla のサイトにも書かれているので参照してください。
https://developer.mozilla.org/ja/docs/Web/Security/Secure_Contexts

出題範囲の詳細

例題解説の提供:株式会社クリーク・アンド・リバー社
HTML5レベル2認定者 伊藤 眞 氏
HTML5レベル2認定者 高井 歩 氏

 
 
例題9.1 「2.9.1 クロスオリジン制約とCORS」
レベル2の出題範囲「2.9.1 クロスオリジン制約とCORS」からの出題です。
JavaScriptからクロスオリジンでHTTP通信を行う際に、サーバーのHTTP レスポンスにおいて、クロスサイト方式でアクセスを承認するドメインを指定するために使用するヘッダーは以下のどれか?
  • Access-Control-Request-Method ヘッダー
  • Access-Control-Allow-Origin ヘッダー
  • Access-Control-Allow-Methods ヘッダー
  • Access-Control-Allow-Headers ヘッダー

※この例題は実際のHTML5プロフェッショナル認定試験とは異なります。

答えはこちら

正解 B
A. Access-Control-Request-Method ヘッダー
これはCross-Origin Resource Sharing を使用するためにHTTP リクエストを発行する際にクライアントが使用するヘッダーで、実際のリクエストを行う際に使用するHTTPメソッドをサーバーがわかるようにするために、プリフライトリクエストを発信する際に使用するものです。

C. Access-Control-Allow-Methods ヘッダー
サーバーがリソースのアクセス時に許可するメソッドを指定します。これはプリフライトリクエストのレスポンスで用いられます。

D. Access-Control-Allow-Headers ヘッダー
実際のリクエストでどのHTTPヘッダーを使用できるかを示すためにプリフライトリクエストのレスポンスで使用します。

同一オリジンポリシーとは、あるオリジンから読み込まれた文書やスクリプトについて、そのリソースから他のオリジンのリソースにアクセスできないように制限するものです。同一オリジンポリシーは Web セキュリティにおける重要な仕組みであり、悪意ある行動を起こしかねないリソースの分離を目的としています。
2 つのページにおいてスキームとポート(あれば)、及びホストがそれぞれ等しい場合、両者のページは同一のオリジンを有していると見なします。
セキュリティ上の理由からブラウザは、スクリプトによって開始されるクロスオリジン HTTP リクエストを制限します。
この制限はかなり厳しいため、CORS(Cross-Origin Resource Sharing) というWeb サーバーがドメインをまたぐアクセスを制御する方法が規定されました、これにより、ドメイン間の安全な通信を保証するというものです。CORS を使用する現行のブラウザは、クロスオリジン HTTP リクエストの危険性を緩和するために XMLHttpRequest のような API コンテナ 内で CORS を使用します。
プリフライト リクエストとは、始めに、実際のリクエストを送信しても安全かを確かめるために他ドメインのリソースへ向けて OPTIONS メソッドを使用して HTTP リクエストを送信します。クロスサイトリクエストはユーザーデータに影響を与える可能性があるため、このようにプリフライトを行います。

出題範囲の詳細

例題解説の提供:株式会社クリーク・アンド・リバー社
HTML5レベル2認定者 伊藤 眞 氏

 
 

メルマガ登録E-mail Magazine

受験を決めたら、まずメルマガ登録。
学習に役立つ例題解説付きメールマガジンを定期発行

氏名

ご提供いただく個人情報の取り扱いについて

ご提供いただいた情報につきましては、当団体内において管理し第三者には開示いたしません。 ご提供いただいた情報につきましては、当団体のオープンソース普及/促進活動のための統計データに反映し、Linux技術者認定事業サービスの充実に活用させて頂くとともに、当団体からの最新情報やイベント情報のご案内を差上げる目的に利用させていただきます。 当団体のプライバシーポリシーについてはこちらをご参照ください。