情報セキュリティスペシャリスト
情報技術者試験まとめへ

システム開発とセキュリティ(4)

ECMAScript

ECMAScriptの概要


ECMAScriptの特徴

基本的な記述方法・規則

HTMLへの組み込み

ECMAScriptをHTMLに組み込むには<script>タグを用いる

ステートメント(文)の記述における規則

文末にセミコロン(;)をつけるが、必須ではない

セミコロンで文末であることを認識するが、省略することも可能
省略された場合、ECMAScriptの処理環境が文脈から文末を判断し、補完する

文の途中に「空白」「改行」「タブ」を含めることが可能

ECMAScriptでは、文の途中の空白や改行、タブは無視される
例外

大文字、小文字が区別される

メソッドや変数名等の大文字、小文字は区別される

変数の定義における規則

変数は「var」を用いる
変数の定義を省略することが可能

データ型における規則と特徴

データ型の種類
データ型の扱いが柔軟

ECMAScriptでは数値を格納していた変数に文字列を格納してもエラーにはならず、正常に処理が行われる

文字列リテラルの処理における規則と特徴

シングルクォート( ' )かダブルクォート( " )で囲む

ECMAScriptで文字列リテラルを扱う場合、シングルクォート( ' )かダブルクォート( " )で囲む必要がある

メタキャラクタのエスケープ処理

ECMAScriptにおいて文字列リテラルにメタキャラクタを含める場合や外部からの入力値を文字列リテラルとして扱う場合は、メタキャラクタをエスケープ処理する必要がある
対象となる文字

※セキュリティ対策上最低限エスケープ処理が必要な文字は、シングルクォート、ダブルクォート、バックスラッシュ、改行の4つ

グローバル変数とローカル変数

グローバル変数
ローカル変数
変数の取扱い
グローバル変数はプログラムのあらゆる場所からいつでも変更が可能なため、サブプログラム間の依存度を高め、プログラムの挙動を複雑にしてしまう
そのため、バグの温床になりやすい
特に、「var」を使用せずに定義されたグローバル変数は発見が困難なバグを作り出す大きな要因となるため、避ける

クッキー


ECMAScriptでクッキーを取り扱う場合「document. cookie」プロパティを使用する

関連技術

Ajax(Asynchronous JavaScript + XML)

非同期通信を利用してデータを取得したり、動的にウェブページの内容を書き換える技術のこと
新しい技術というより、JavaScript や XML、CSS、JSONなどの既存の技術を組み合わせたもの
中心的な技術はJavaScriptで、非同期通信はJavaScriptのXMLHttpRequestによって行なわれる
非同期でサーバと通信して、ファイルの内容を取得したり、PHPなどのプログラムの出力結果をテキストやXMLなどで受け取ることが可能
サーバからの受信したデータはDOM経由でページに反映する
XMLはタグの記述によってデータが肥大化することや、DOMの操作も複雑になりがちであるなどの理由から、最近ではXMLに代わってJSONが広く利用されている
Google マップに利用されている

DOM(Document Object Model)

HTML文書やXML文書を構成するテキスト、タグ、属性などの各種要素をオブジェクトとみなし、それらの論理的構造やアプリケーションから操作するための仕組みのこと

XMLHttpRequest

JavaScriptなどのWebブラウザ搭載のスクリプト言語でサーバとのHTTP通信を行うための、組み込みオブジェクト(API)
すでに読み込んだページからさらにHTTPリクエストを発することができ、ページ遷移することなしにデータを送受信できるAjaxの基幹技術
XMLHttpRequestを利用したWebアプリケーションは非常に多く存在する
(例:Google マップ、Facebook)

Same-Origin Policy(同一生成元ポリシ)

JavaScriptと同時にウェブブラウザに導入されたセキュリティ上の考え方で、コンテンツがブラウザに来る源泉(origin)に基づいて整理して、外部からの干渉を防ごうとする
ホスト、スキーム、ポートの3つを一組としてすべて一致するとき同一とみなす。  例)次のものは同一のところから来たと扱われる
  ・http://example.com/
  ・http://example.com:80/
  ・http://example.com/path/file

 次のものは、お互いに別のところから来たと扱われる
  ・http://example.com/
  ・http://example.com:1234/
  ・http://www.example.com/
  ・https://example.com/
  ・http://example.org/
異なる源泉から来たコンテンツについて、ブラウザ(正確にはユーザーエージェント)はセキュリティ上の干渉を阻止するため、さまざまな制限を行う。以下は一例である
  ・XMLHttpRequestによる取得の禁止
  ・スクリプトによる別のoriginであるiframeやwindowに対する操作の制限
  ・Canvasへの一部の操作の制限
この制限がない場合、ログインしないとみることのできない情報のあるサイトにログインしているとき、ほかの生成元のサイトからそれを取得されるなどの危険が生じる

JSON(ジェイソン、JavaScript Object Notation)

軽量なデータ記述言語の1つ。構文はJavaScriptにおけるオブジェクトの表記法をベースとしているが、JSONはJavaScript専用のデータ形式では決してなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しに使えるよう設計されている。

表記方法

JavaScript(ECMAScript)では、JSONデータ全体を()でくくってeval関数に引き渡すことによって解析され、個々のデータにアクセスすることが可能とる
eval関数は、与えられた文字列の中からスクリプトを検索し、実行する。便利ではあるが、悪用されると第三者によって不正なスクリプトが実行されてしまう可能性がある

JSONP(JSON with Padding)

scriptタグを使用してクロスドメインなデータを取得する仕組みのこと。HTMLのscriptタグ、JavaScript、JSONを組み合わせて実現される
【仕組み】
ブラウザなどに実装されている「同一生成元ポリシ」という制約により、Webページは通常、自分を生成したドメイン以外のドメインのサーバと通信することはできないが、HTMLのscriptタグのsrc属性には別ドメインのURLを指定して通信することができるという点を利用することによって別ドメインのサーバからデータを取得することが可能になる。これを利用した方法
【注意点】
JSONPでは「Same-Originポリシ」が適用されないため、個人情報等を含むJSONデータが第三者に悪用される可能性がある。JSONP型データをブラウザに送信する前に、認証情報やReferrerヘッダ等を用いてリクエストが正規のものであることを確認するなど、有効な対策を検討・実施する


≪SQL文のセキュリティ≫

SQLを用いたデータベース操作において、セキュリティ上重要なもの⇒「GRANT」、「REVOKE」

ユーザに対し、テーブル、ビューなどのオブジェクトに関する特定の権限を付与する

ユーザに既に与えられているテーブル、ビューなどのオブジェクトに関する特定の権限をはく奪する


基本的な構文等は「基本情報技術者試験」⇒「データベース」⇒「」SQLの記述方法」⇒「アクセス権」を参照


 

ページトップへ 次へ