• このエントリーをはてなブックマークに追加

HTML5プロフェッショナル認定試験レベル2 サンプル問題

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

2.8 ストレージ に関する問題

例題8.4「2.8.1 Web Storage」
レベル2の出題範囲「2.8.1 Web Storage」からの出題です。
Web Storageを使う場合におこりうる、セキュリティ上の問題として正しいものを選択しなさい。
  • SQLインジェクションが発生する可能性がある。
  • Session Storageではデータが永続的に保存されるため、不特定多数が使用するWebブラウザで問題になる。
  • Local Storageと異なり、Session StorageはWebサーバ側にデータが保存されるため情報漏洩に繋がる。
  • Session StorageのデータはWebサーバとの通信が暗号化されていないと情報漏洩の危険性がある。
  • Local Storageではデータが永続的に保存されるため、複数のユーザが使用するWebブラウザで問題になる。

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

答えはこちら

例題8.3「2.8 ストレージ」「2.8.2 Indexed Database API」
レベル2の出題範囲「2.8 ストレージ」「2.8.2 Indexed Database API」からの出題です。
次のJavaScriptのソースコードを含むWebページを表示するブラウザには、バージョン1のbooksデータベースとbookオブジェクトストアがすでに作成されています。
そのブラウザで再度次のWebページを表示した結果として正しいものを1つ選びなさい。
なお、オリジンなどの条件も同一であるとします。
var idb = window.indexedDB,
	 request = null,
	 db = null,
	 store = null,
	 transaction = null;
		
request = idb.open( "books", 1 );
request.onupgradeneeded = function () {
	db = request.result;
	
	store = db.createObjectStore("book", { keyPath: "isbn" });
	store.createIndex("by_author", "author");
	
	store.put({ title: "The Woman in the Dunes", author: "Kobo Abe", isbn: 123456 });
	store.put({ title: "Confessions of a Mask", author: "Yukio Mishima", isbn: 234567 });
}

request.onsuccess = function() {
	db = request.result;
	transaction = db.transaction( "book" );
	store = transaction.objectStore( "book" );
	
	store.put({ title: "Kappa", author: "Ryunosuke Akutagawa", isbn: 987654 });
}
		
  • successイベントが発生し、bookオブジェクトストアに新しいデータが追加される
  • successイベントが発生し、bookオブジェクトストアへのデータ追加でエラーが起きる
  • upgradeneededイベントが発生し、同名bookオブジェクトストアを作成しようとすることでエラーが起きる
  • upgradeneededイベントが発生し、同名indexを作成しようとすることでエラーが起きる

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

答えはこちら

例題8.2「2.8.3 File API Blobオブジェクト」
レベル2の出題範囲「2.8.3 File API Blobオブジェクト」からの出題です。
次のJavaScriptコードにおいて、色データが格納されたBlobオブジェクトを読み込み、コンソールに「rgba(R, G, B, 不透明度)」の形式で出力するための最も適切なコードを一つ選択しなさい。
なお、コード内のdata変数にR、B、G、不透明度(%)の順にunsigned integerで格納されていることとする。
  • var r, g, b, a = 0;
    var reader = new FileReader();
    reader.onload = function(read){
        var rgba = new Uint8Array(read.target.result);
        r = rgba[0]; // Rの読み込み
        g = rgba[1]; // Gの読み込み
        b = rgba[2]; // Bの読み込み
        a = rgba[3]; // 不透明度の読み込み
    };
    reader.readAsArrayBuffer(data);
    console.log("rgba(" + r + ", " + g + ", " + b + ", " + a + ")");
    		
  • var r, g, b, a = 0;
    var reader = new FileReader();
    reader.onload = function(read){
        var view = new DataView(read.target.result);
        var rgba = view.getUint32(0);
        r = (rgba & 0xff000000)>>>24; // Rの読み込み
        g = (rgba & 0xff0000)>>>16; // Gの読み込み
        b = (rgba & 0xff00)>>>8; // Bの読み込み
        a = rgba & 0xff; // 不透明度の読み込み
        console.log("rgba(" + r + ", " + g + ", " + b + ", " + a + ")");
    };
    reader.readAsArrayBuffer(data);
    		
  • var r, g, b, a = 0;
    var reader = new FileReader();
    reader.onload = function(read){
        var view = new DataView(read.target.result);
        r = view.getUint8(0); // Rの読み込み
        g = view.getUint8(1); // Gの読み込み
        b = view.getUint8(2); // Bの読み込み
        a = view.getUint8(3); // 不透明度の読み込み
        console.log("rgba(" + r + ", " + g + ", " + b + ", " + a + ")");
    };
    reader.readAsArrayBuffer(data);
    		
  • var r, g, b, a = 0;
    var reader_r = new FileReader();
    reader_r.onload = function(read){
        var view = new DataView(read.target.result);
        r = view.getUint8(0); // Rの読み込み
    };
    reader_r.readAsArrayBuffer(data.slice(0, 1));
    
    var reader_g = new FileReader();
    reader_g.onload = function(read){
        var view = new DataView(read.target.result);
        g = view.getUint8(0); // Gの読み込み
    };
    reader_g.readAsArrayBuffer(data.slice(1, 2));
    
    var reader_b = new FileReader();
    reader_b.onload = function(read){
        var view = new DataView(read.target.result);
        b = view.getUint8(0); // Bの読み込み
    };
    reader_b.readAsArrayBuffer(data.slice(2, 3));
    
    var reader_a = new FileReader();
    reader_a.onload = function(read){
        var view = new DataView(read.target.result);
        a = view.getUint8(0); // 不透明度の読み込み
    };
    reader_a.readAsArrayBuffer(data.slice(3, 4));
    console.log("rgba(" + r + ", " + g + ", " + b + ", " + a + ")");
    		

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

答えはこちら

例題8.1「2.8.1 Web Storage」
レベル2の出題範囲「2.8.1 Web Storage」からの出題です。
Web Storageのセキュリティについて、正しいものを全て選択しなさい。
  • ドメインが同じであれば、ストレージを共有できる。
  • URL毎に独立のストレージを作成できる。
  • ドメインが同じあっても、スキーマが異なる場合はストレージを共有できない。
  • セッションの異なるストレージは共有できない。

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

答えはこちら

このページの先頭へ