hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
ビット 情報容量と情報圧縮
ストレージの情報容量や通信路の情報容量がビットやビット毎秒で表されるとき、多くの場合でバイナリデータを格納するコンピュータハードウェアの容量である二進数を指す。ストレージの情報容量は、そこに格納される情報量の上限に過ぎない。ストレージに含まれる各ビットの2つの可能な値（1と0）の数が等しくない場合、ストレージに含まれる情報の情報量は、「情報容量」として表される数値よりも小さくなる。実際、値が完全に予測可能ならば、その値の読み取りからは新たな情報は得られない（不確実性の解決が発生せず、したがって情報が利用できないため、エントロピーはゼロである）。nビットのストレージを使用するコンピュータファイルに含まれる情報がm < nビットのみの場合、その情報は原則として少なくとも平均で約mビットで符号化できる。この原則は、データ圧縮技術の基礎である。最適に圧縮された場合、伝送容量は情報量に近づく。
ビット ビット単位の操作
一部のビット演算のプロセッサ命令（bit setなど）は、データをビットの集合と解釈して操作するのではなく、個別のビットを操作するレベルで動作する。
1980年代、ビットマップコンピュータディスプレイが一般的になると、一部のコンピュータでは、画面上の特定の矩形領域に対応するビットを設定・コピーするための特殊なビットブロック転送命令（"bitblt"または"blit"）を提供した。
バイトやワードといった単位におけるビット位置の定義は CPU によって異なる。右端（数値としての最小位、LSB）を第0ビットにしている流儀と、左端（数値としての最大位、MSB）を第0ビットにしている流儀の両方がある。現在は前者が多い。この違いをエンディアンといい、前者をリトルエンディアン、後者をビッグエンディアンという。
二進法
二進法（にしんほう、英: binary numeral system, base-2 numeral system）とは、底を2とする位取り記数法および命数法である。二進法によって表された数を二進数（にしんすう、英: binary number）と呼ぶ。二進法において、位は順に底2の冪（…, 1/4, 1/2, 1, 2, 4, …）ごとに取り、位の値は 0 または 1 を取る（例：十進数の 7 (= 4 + 2 + 1) は二進法で 111、1.75 (= 1 + 0.5 + 0.25) は 1.11 と表される）。
二進法 記数法
二を底とする位取り記数法を二進記数法または単に二進法と呼ぶ。二進法による数の表示は、一の位を k = 0 とし添字 k で位の位置を表し、位の値を dk ∈ {0, 1} で表せば、以下のように書ける：
これは以下の総和の略記と見なせる：
例えば十進法における 21.25 は二進法において、
と表される（添字の 2 は二進表記であることを示す）。負の数は一般的な記数法と同じく、負号をつけて表す（例：−10101.012）。
十進法など一般の位取り記数法と同様に、二進法においても小数部が有限の長さとなる数は一部の有理数に限られ、また円周率のような無理数を厳密に表すことはできない。二進法の場合、有理数を表す既約分数について、分母が2の冪ならば有限小数として書けるが、そうでないならば有限小数としては書けない。例えば十進法では 1/5 を有限小数 0.2 で表せるが、二進法では循環小数 0.00112 = 0.00110011…2 で表さなければならない。
二進法 デジタル機器での使用
電子式コンピュータの電子回路などのデジタル回路（デジタル論理回路）、磁気ディスク等の記憶メディアでは、電圧の高低、磁極の N/S など、物理現象を二状態のみに縮退して扱う（離散化などと言う）ので、それに、真と偽の2つの値（2値の真理値）のみを使用する二値論理（しばしば、電子的には H と L、論理的には T と F という記号が使われる）をマッピングする。更にそこで数値を扱うには、それに「0 と 1」の二進法をマッピングするのが最適である。
多くの応用で見られるように桁数が有限の場合は、数学的に言うなら「有理数の部分集合」が表現されているわけであるが、通常は「有限精度の実数」が表現されていると解釈される。このため、コンピュータやデジタル機器は二進数が使用される。
二進法 デジタル機器での使用
また、八進法や十六進法や三十二進法は同じく2の冪を底とするためしばしば利用される。
ビット列によって負の数の値を表すため広く用いられる方法の一つとして、2の補数表現がある。2の補数表現は、n 桁のビット列の最上位ビットの重みを +2n−1 ではなく −2n−1 とするものである。2の補数表現は、そのビットパターンが、加減(及び、乗)の演算において特別な処理が不要なものになる、という特長を持つ。ただし、溢れ（オーバーフロー）の扱いが違ってくる（これは、例えばx86プロセッサにおける、キャリーフラグとオーバフローフラグの違いのことである（ステータスレジスタ#キャリーとオーバーフローを参照））。
二進法 他のN進法から二進法への変換方法
「十進法から二進法への変換方法」などといったものを考える必要はない。どちらも数の「表現法」に過ぎないのだから、単に「表現法 → 数 → 表現法」といったようにして変換すれば良いのである。
正の整数 m を十進法から二進法に変換するのは次のようにする。
余りを求めた順の逆に並べると、それが二進法に変換された結果になる。
例:192を二進法に変換する。
よって 19210 = 110000002 である。
正で 1 未満 (0 < m < 1) である数 m を十進法から二進法に変換するのは次のようにする。
計算の例1: 1/3 を二進法に変換する。
ここで「処理」の部分の最後「」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「01」が循環することがわかるので終了する。
二進法 他のN進法から二進法への変換方法
よって1/310=0.010101…2=0.012
（なお、アンダーバーの部分（01）は無限に繰り返しという意味）
計算の例 2: 十進法での 0.1 を二進法に変換する。
ここで「処理」の部分の最後「0.4×2 = 0.8 < 1」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「0011」が循環することがわかるので終了する。
よって 0.110 = 0.0001100110011…2 = 0.000112 である。
二進法 命数法
二進命数法とは、2 を底とする命数法である。
通常、二進法の数詞を持つとされるものは二つ組で数える体系であり、乗算が含まれない。以下にパプアニューギニアの南キワイ語 (Southern Kiwai) およびシッサノ語 (Sissano) の数詞を示す。
現代日本における万進、あるいは十二進法体系であるダース・グロスなどのように、2倍ごとに新しい単位が命名される体系は、自然言語では、パプアニューギニアのメルパ語 (Melpa) でのみ知られている。
二進法 歴史
中国には古くから易の八卦や六十四卦があり、それぞれ 3 ビットと 6 ビットに相当している。易経の六十四卦の配列は対応する整数の順になっていて、それらを 1→2→4→8→16→32→64 と進展させる｢加一倍の法｣を11世紀の儒学者邵雍が考案した。ただし、彼らがそれを整数（ないし、数）に対応するとして理解していたという証拠はない。その配列はそれぞれが二種類の値をとる要素の 6 タプルを辞書式順序に並べたものと見ることもできる。
インドの学者ピンガラ (Pingala, 紀元前200年頃) は韻律を数学的に表現する方法を考案し、それが現在知られている最古の二進法の記述の一つとされている。
同様の二進法的組合せの使用は、アフリカのヨルバ人が行っていた占い Ifá にもあり、中世ヨーロッパやアフリカのジオマンシーにも見られる。2 を底とする体系はサハラ以南のアフリカでジオマンシーに長く使われていた。
二進法 歴史
1605年、フランシス・ベーコンはアルファベットの文字を2種の記号の列で表す体系を論じ、任意の無作為なテキストで微かに判別可能なフォントの変化に符号化できるとした。一般理論として彼が指摘した重要な点は、同じ方法をあらゆる物に適用できるという点であり、「2種類の異なる状態をそれらの物で表現できればよく、鐘、トランペット、光、松明、マスケット銃など同様の性質があればどんなものでもよい」とした。これをベーコンの暗号と呼ぶ。
数学的に二進法を確立したのは17世紀のゴットフリート・ライプニッツで、"Explication de l'Arithmétique Binaire" という論文も発表している。ライプニッツは現代の二進法と同じく、1 と 0 を使って二進法を表した。ライプニッツは中国愛好家でもあり、後に「易経」を知って、その八卦に 000 から 111 を対応させ、彼の賞賛してきた中国の哲学的数学の偉大な成果の証拠だとした。
1800年代中頃、イギリスの数学者ジョージ・ブールがブール代数（ブール論理）により、二進的な数（ここで言う「数」は、数学的な広義の意味であり、普通の二進法の対象である、数値という意味ではない）の代数による命題論理の形式化を示した。
1936-1937年の中嶋章と榛沢正男による「継電器回路に於ける単部分路の等価変換の理論」、1937年のクロード・シャノンによる "A Symbolic Analysis of Relay and Switching Circuits"

により相次いで、リレーのようなスイッチング素子による回路（ディジタル回路）の設計がブール代数によって行えることが示され、1940年代に始まり今日まで続くコンピュータの理論の基礎のひとつとなっている。
位取り記数法
位取り記数法（くらいどりきすうほう、英: positional notation）とは、いくつかの数字を並べて数を表す方法である（例：123、3.14、3;8,24）。
数字ないし決まった文字数の数字列の置かれた位置を位（くらい）または桁（けた）と呼び、数字の位を決めることを位取りという。
一つの桁を N 種の数字列の組み合わせで表す位取り記数法をN 進位取り記数法（エヌしんくらいどりきすうほう）あるいは単に N 進法（エヌしんほう）と呼ぶ。また、数 N を基数（きすう、英: radix）ないし底（てい、英: base）と呼ぶ。
例えば、一般的に用いられる 0 から 9 までのアラビア数字による記数法は十進法にあたる。十進法でない例として、時刻や角度を表す単位の分や秒は六十進法が使われている。またコンピュータの分野においては数値表現に二進法とその派生である八進法や十六進法がしばしば用いられる。
位取り記数法
位取り記数法は古代中国に由来する。中国では紀元前14世紀の商時代にすでに十進法が用いられており、紀元前4世紀にはゼロを空位として記述する位取り記数法を用いていた。対してヨーロッパにおける最古の十進法が記述された文書は976年のスペインの手稿本である。
本項では N が 2 以上の整数の場合を扱う。それ以外の場合については広義の記数法の記事を参照のこと。また後述するp 進数の概念とは（関連があるものの）別概念であるので注意が必要である。
位取り記数法 記法
2 以上の整数 N を底（基数）とする位取り記数法（N 進法）において、それぞれの位の値は 0 から N − 1 までの N 個の非負の整数に対応した数字で表される（例：1234567890、一二三四五六七八九〇）。
非負の数は位取り記数法によって、以下のように表される：
ここで dk ∈ {0, ... , N − 1} は位の値を表し、添字 k はここでは Nkの位の冪指数を表す。添字 k が 0 以上の位の値の並びは整数を表し整数部分（英: integer part）と呼ばれる。添字 k が −1 以下の位の値の並びは小数部分（英: fractional part）と呼ばれる。整数部分と小数部分は小数点（英: radix point）によって区切られる（例：123.456）。もし位取り記数法で表される数が整数ならば、小数点は書かなくともよい（例：123）。m は整数部分の桁数を表す。小数部分について、k = −1, −2 , ... の位はそれぞれ順に小数第一位、第二位、……と呼ばれる。
また負の数は負符号（−）を数字列の前方につけて表す（例：−123.456、−123）：
位取り記数法による数の表示は、底の冪 Nk とその位の値 dk の積の和の略記と見なせる：
位取り記数法 記法
ここで右辺の和の記号は以下を表す：
例えば、十進法における 123.45 は、
と展開できる。
小数部分の位の値は有限個の場合もあれば、そうでない場合もある。N 進法で循環小数となるような有理数や、無理数は有限の桁数では表せないため、末尾に省略記号（…）を付けて有限桁でないことを示す（例：円周率 π の十進展開 π = 3.14159...）。
循環小数について、以下のように、循環節（英: repetend）を上線などによって示す記法も用いられる（以下では上線を用いる）：
ここで λ は循環節の長さを表し、r は循環節が始まる位を示す。例えば十進法において 1/14 は 0.0714285 と表される。
慣習的に、特に断りのない限り、位取り記数法で示された数は十進数と解釈される。異なる底を用いていることを示すため、以下のように底を併記することがある：
または底を括弧で囲わず、
あるいは数を括弧書きして、
上記の記法において、底の数自体は十進法で表記される。例えば、10(2) は二進数であり、十進数 2 に等しい数を表す。また 100(16) 十六進数であり、十進数 256 に等しい数を表す。
位取り記数法 記法
その他の記法として、コンピュータ・プログラミングにおいて、プログラミング言語によっては、定まった数を表す構文（リテラル）が用意されている。例えばC言語やC++において、123 は十進法、0x012abc および 0X345DEF は十六進法、0b0101 および 0B1010 は二進法、0123 は八進法の定数をそれぞれ表し、底の区別は先頭の記号によってなされる（0 以外の数字で始まるなら十進数、0x または 0X で始まるなら十六進数、0b または 0B で始まるなら二進数、それ以外は八進数と解釈される）。JavaScriptなどでは八進数についてより厳格に、0o または 0O で始まる文法を採用している。より柔軟な記法として、2から36までの底について、Smalltalkでは base "r" value（例：16rFFEF）、Erlangでは base "#" value（例：16#ffef）という構文を採用している。base は底を表す十進整数であり、value はその進数法での数値を表す英数字の列である。
位取り記数法 適用例
数列
十進法は最も身近な位取り記数法である。十進法では、十個の数字を用い、一桁にひとつの数字を容れて必要な桁数分を並べて数値を表す。
アラビア数字なら
0、1、2、3、4、5、6、7、8、9
の十個であり、
漢数字なら
〇、一、二、三、四、五、六、七、八、九
の十個である。以下、アラビア数字を例に説明するが、漢数字の場合も同様である。
十進法ではこれらの数字を列べる事で数を表現する。
例えば、312.02は、
を表す。
例えば五進法をアラビア数字で表した場合、使う数字は
0、1、2、3、4
の五種類の記号であり、五進法における431.02は、
を表し、これは十進法の116.08にあたる。
注意すべき点は、同じ「431.02」でも五進法のものと十進法のものでは値が異なる。このため、位取り記数法の話をするときには、常に何進法の話であるのかを明示する必要がある。（後述）
位取り記数法 適用例
十二進法、十六進法、二十進法のように、N が十より大きい場合は用いる数字は、アラビア数字だけでは足りなくなる。そこで、十以上の数を表記する「数字」として、ラテン文字のアルファベットの大文字を用いる事が多い。
例えば十六進法であれば、「数字」として
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
を用い、A、B、C、D、E、Fはそれぞれ十進法の自然数10、11、12、13、14、15に対応する。
従って例えば2F3.A7は
を表し、これは十進法の755.652344にあたる。
位取り記数法 可除性
有理数を小数で表す際、有限小数になる場合と循環小数になる場合がある。本節では底 N の位取り記数法で有理数が有限小数として表される（分子が分母で「割り切れる」）条件について述べる。
一般に、既約分数 x/y が底 N の位取り記数法において有限小数として表されるには、分母 y が底 N が持つ素因数  の積  （ただし k は 0 以上の整数）になっていなければならない（さもなくば N の冪を掛けて整数にならない）。この条件は分子によらないため、有限小数で表せるかは単位分数で表される有理数に限って調べればよい。
例えば十進法では N = 10 = 2⋅5 のため、ある有理数を既約分数で表した際、分母が 2 と 5 以外に素因数を持たない場合には有限小数となり、それ以外は循環小数となる。
N 進有限小数が M 進有限小数でもあるには、その有限小数を既約分数で現した際の分母が2つの底 N, M の冪のいずれの約数にもなる必要がある。特に、すべての N 進有限小数が M 進有限小数であるには M の素因数がすべて N の素因数に含まれていなければならない。
位取り記数法 表記の一意性
この節では特に断りがない限り十進数について述べるが、他の底についても同様である。
実数の N 進表記は一意ではない。
よく知られているように、
1=1.000…=0.999…
である。また、以下のように、上位桁に不要な0を付け加えることもできる。
0013=13
通常は「0013」のような表記は許さないとする事が多いが、コンピューターなどでは、最大で4桁の整数値であることを示すため、あえて「0013」のような表記をする場合がある。
以上のような例を除くと0以外の実数は一意に表現できる。
しかし、0のみは
「+0」、「-0」
の二通りの表記が可能である(いわゆる負のゼロの問題)。これが原因で、コンピューター・プログラムでは0のみ例外処理を求められる場合がある。
また、一般には0は1桁の数とされているが、ルールを優先し1桁の数と認めない場合もある（覆面算#ルール）。
表計算ソフトの列名などで用いられている、A, B, ..., Z, AA, AB, ... のような形式は、位取り記数法の一種と考えることができ、かつ0より大きい整数を一意に表せる。(en:Bijective numeration)
位取り記数法 底の変換アルゴリズム
与えられた非負整数 T を、記号を数字として用いた N 進表記
で表すには、以下のアルゴリズムを用いればよい。
なお、このアルゴリズムは、 M ≠ NによりM 進表記されている T を N 進表記に書き換えるときに使われる事が多いので、このアルゴリズムを底の変換アルゴリズムと呼ぶ。
なお、T >0に対しては等式
が知られている(なお、添え字を0から始めているので、T の桁数はr +1) 。ここでは床関数である。
十進法→五進法への変換
十進法の 5213 を五進法に置き換える場合、5で割っていき、商が5未満になった時点で止める。余り無しの場合は 0 を明記する。商が5未満になったら、最後の商を先頭にして、最初の余りを末尾にして列べる。
から、5213 = 3 + 2 × 5 + 3 × 52 + 1 × 53 + 3 × 54 + 1 × 55 となるので、五進表記では 131323 と表すことができる。また、55 = 3125, 56 = 15625 であるから、55 ≤ 5213 < 56 が成り立っているので、対数を取ると
位取り記数法 底の変換アルゴリズム
となり、
が分かる。
十進法以外→十進法以外への変換
十進法以外のN進法も同様で、例えば38に当たる六進法の 50213 を十六進法に置き換える場合も、商が24(6) = 10(G) を下回るまで24で割っていく。
以上より、1, 13, 14, 1の列になり、13(6) = 9(G)、14(6) = A(G) なので、十六進法では 19A1 となる。
同値の小数への変換
小数を別のN進法に変換する場合には、以下の経過を践む。
（例）十進数0.531441 → 十二進数六桁
以上より、十進数0.531441 は、十二進数では約0.6463B6 となる。
（例）十進数0.124053 → 六進数九桁
よって、十進数0.124053 は、六進数では約0.042443452 となる。
位取り記数法 複数の底の混在
十進法では、機械的に十倍、百倍、千倍、一万倍…の順で増える。同じく、十二進法では、機械的に十二倍、百四十四倍、千七百二十八倍、二万七百三十六倍…の順で増える。
しかし、底を2つに分ける場合がある。十進法に対して、二・五進法（十が五進命数法で「二五」なので、区別するため二と五の間に点が必要）では二と五の2つの底があるので、桁が上がる度に五倍→二倍→五倍→二倍…と交互になり、「十の冪数」と「十の冪数の五倍」が交互に現れる。これはそろばんと同じく一桁が「一の位」4つと「五の位」1つで構成される方法だが、計算機にも応用されている。
時間：
秒、六十進法、分、六十進法、時、二十四進法、日、七進法、週
秒、六十進法、分、六十進法、時、二十四進法、日、三十進法、月、十二進法、年、十進法、十年紀、十進法、世紀、十進法、千年紀
バビロニアの六十進法もそろばんに似た方法で、一桁が「一の位」9つと「十の位」5つで構成されており、整数は十倍→六倍→十倍→六倍と交互になり、小数は六分の一→十分の一→六分の一→十分の一と交互になる。この方法では、整数第二位は「六十の位」と「六百の位」に分かれ、整数第三位は「三千六百の位」と「三万六千の位」に分かれ、小数第一位は「六分の一の位」と「六十分の一の位」に分かれ、小数第二位は「三百六十分の一の位」と「三千六百分の一の位」に分かれている。
位取り記数法 複数の底の混在
階乗進法
これら二・五進法や六十進法のように複数の底が設定されている場合には、" : " などの区切り符号を付ける。例えば、六十進法で十進法を補助とする場合には、58 → 59 → 1:00 → 1:01 → 1:02 …の順に数列が進む。
日本の通貨（硬貨と紙幣）には、昇順で一円→五円→十円→五十円→百円→五百円→千円→五千円→一万円があるので、通貨を一つの単位と見れば、これは前述の二・五進法である。この配列を見ると、一（100）、十（101）、百（102）、千（103）、一万（104）が十の冪数であり、五、五十、五百、五千が「十の冪数の五倍」である。
位取り記数法 英語表記
「底 N 」を英語で、base N という。特定のNに関しては倍数接頭辞を基に名称がついているが、名称の付け方は不規則である。通常、接尾辞が -ary である語は、ラテン語の -arius (～の、～に関する) に由来して、「N 個一組」「N を単位とする」「N 個から成る」を意味する語である。一方、接尾辞が -imal である語は、ラテン語の -imus に由来して、「第 N」「N 分の一」を意味する語である。
以下は「底 N 」、もしくはより明解に「N 個一組」「N を単位とする」「N 個から成る」という意味の形容詞である。
これらを使い、a base-two numberで「二進数」、the base-two numeral systemで「二進法」を表す名詞となる。
同様にa binary number、the binary numeral systemでもそれぞれ「二進数」、「二進法」を表す名詞となる。他の底も同様。
位取り記数法 p進数
N 進表記と関連が深い概念として、素数 p 毎に定まる p 進数というものもある。
名称は本稿で解説しているN 進表記の別名であるN 進数と同一であるものの、別概念ではある。ただし両者は非常に関連があり、整数の p進表記を（可算）無限桁の自然数の範囲に拡張したものが p進整数で、さらにそこに有限桁の小数部分を許したものが p進数である。ただし「無限桁の整数」（の一部は有理数として再解釈できるもののほとんど）は本稿で扱う普通の数（実数）とは異なる。
建長寺
建長寺（けんちょうじ）は、神奈川県鎌倉市山ノ内にある禅宗の寺院で、臨済宗建長寺派の大本山。正式には巨福山建長興国禅寺（こふくさんけんちょうこうこくぜんじ）と号する。
鎌倉時代の建長5年（1253年）の創建で、本尊は地蔵菩薩。開基（創立者）は鎌倉幕府第5代執権・北条時頼、開山（初代住職）は南宋の禅僧・蘭渓道隆で、第二世は同じく南宋の兀庵普寧である。鎌倉五山の第一位。境内は「建長寺境内」として国の史跡に指定されている。また、浄智寺などとともに神奈川県の歴史的風土特別保存地区に指定されている。
建長寺 歴史
建長寺は鎌倉幕府第5代執権・北条時頼により創建された禅宗寺院で、建長5年（1253年）に落慶供養が営まれている。開山（初代住職）は南宋からの渡来僧・蘭渓道隆（大覚禅師）であった。当時の日本は、承久の乱（1221年）を経て北条氏の権力基盤が安定していた。京都にある朝廷の全国支配力は弱まり、政治的には鎌倉が事実上、日本の首府となっていた時代であった。北条時頼は熱心な仏教信者であり、禅宗に深く帰依していた。
創建の時期については、鎌倉幕府の公式記録である『吾妻鏡』には建長3年（1251年）から造営が始められ、同5年（1253年）に落慶供養が行われたとある。造営開始時期については建長元年（1249年）ないし2年からとする異説もあるが、おおむね建長元年（1249年）頃から造営の準備がなされ、同5年（1253年）に完成したとされる。建長寺が所在する山ノ内は、幕府のある鎌倉の中心部からは山一つ隔てた所に位置し、鎌倉の北の出入口の護りに当たる要衝の地であって、北条氏の本拠地でもあった。建長寺の境内が広がる谷（鎌倉では「やつ」と読む）は、元は「地獄ヶ谷」と呼ばれる処刑場で、地蔵菩薩を本尊とする伽羅陀山心平寺という寺が建っていた。建長寺の本尊が禅宗寺院の本尊として一般的な釈迦如来ではなく地蔵菩薩であるのは、こうした因縁によるものである。また、心平寺の旧本尊と伝える地蔵菩薩像は今も建長寺に伝来している。
建長寺 歴史
開山の蘭渓道隆は中国・宋末の禅僧で、寛元4年（1246年）、33歳で来日した。はじめ筑前国博多に着き、京都に一時住んだ後、宝治2年（1248年）に鎌倉入りした。建長寺が創建されるまでは常楽寺（鎌倉市大船に現存）に住した。当時の日本には、すでに半世紀以上前に建立された建仁寺（京都）や寿福寺（鎌倉）などの禅宗系寺院があったが、当時これらの寺院は禅宗と他宗との兼学であり、純粋禅の道場としては建長寺は、聖福寺（北九州）などに次ぐ古さを誇るとされている。伽藍配置は中国式であり、寺内では日常的に中国語が使われていたという。蘭渓道隆の禅風は中国宋時代の純粋禅を受け継いだ厳格なものであった。道隆は弘長2年（1262年）京都の建仁寺に移ったが2年後に鎌倉に戻って建長寺住持に復帰。その後、文永の役の際には中国側のスパイと疑われたためか、甲斐国（山梨県）に流されたこともあったが、のちに許されて鎌倉に戻り、弘安元年（1278年）4月、建長寺住持に再度復帰。同じ年の7月、異国日本で生涯を閉じた。66歳であった。
建長寺 歴史
その後の建長寺は正応6年（1293年）4月12日に発生した鎌倉大地震により建造物の大半が倒壊、炎上。元から来日した一山一寧を第十世に任じて再建にあたらせる。だが、続いて正和4年（1315年）、応永23年（1416年）をはじめとするたびたびの火災で創建当初の建物を失った。鎌倉時代末期には修復費用獲得のため、幕府公認で元へ貿易船（寺社造営料唐船）が派遣され、「建長寺船」と呼ばれた。江戸時代には徳川家の援助で主要な建物が新築または他所から移築されたが、1923年の関東大震災でも大きな被害を受けている。
建長寺 伽藍
創建当時の建物は失われたとはいえ、総門・山門・仏殿・法堂（はっとう）・方丈が一直線に並ぶ伽藍配置は、創建当時の面影を残すものとされる。なお、地形の関係で総門 - 山門間の参道は斜めになっている。
天明3年（1783年）の建立。1940年に京都の般舟三昧院（はんじゅざんまいいん）から移築されたものである。総門に掲げられた「巨福山」の額は建長寺10世住持で書の名手である渡来僧・一山一寧の筆と伝える。「巨」字の第3画目の下に、余分な「点」が書き加えられているが、この点があることによって字に安定感が出ているとされる。
安永4年（1775年）の上棟で、2005年に重要文化財に指定されている。「三門」とも表記する（重要文化財指定名称は「建長寺山門」）。
建長寺 伽藍
三間一戸の二重門で、上層屋根はこけら葺き形銅板葺きとする。棟梁は建長寺大工の河内長兵衛である。下層はすべて吹き放しで、扉は設けていない。禅宗様建築は一般に木柄の細いのを特色とするが、この門は柱などの各種部材が太く豪快であるのが特色である。門の中心に位置する2本の柱からは前後左右に虹梁（こうりょう）を架け、虹梁上に大瓶束（たいへいづか）を立てて鏡天井を支える。上層の正面中央には唐破風を設け、ここに「建長興国禅寺」の扁額を掛ける。上層内部には宝冠釈迦如来像を中心に十六羅漢像、五百羅漢像（銅造）などを安置する（上層は非公開）。関東大震災では上層の屋根が破損したが、これは本来、こけら葺き用に造られていた小屋組に江戸時代末期に重い銅板を葺いたことが原因であり、門の主要部材の被害は軽微であった。
重要文化財。寄棟造で単層裳階が付く。
芝（東京都港区）の増上寺にあった、徳川秀忠夫人崇源院の霊屋（たまや）を建て替えに際し、譲渡されたもので、正保4年（1647年）に建長寺に移築されている。
もともと霊廟建築として造られたものであるので、屋根や天井などの形式が一般的な禅宗の仏殿とは異なっている。すなわち、屋根は入母屋造でなく寄棟造である。また、天井は禅宗仏殿では平板な「鏡天井」とし、龍などの絵を描くことが多いが、この仏殿の天井は和様の格天井（ごうてんじょう）である。
建長寺 伽藍
堂内には本尊の地蔵菩薩坐像（室町時代の作、像高2.4メートル）、もとこの地にあった心平寺の旧本尊地蔵菩薩坐像、千体地蔵菩薩立像、千手観音坐像、伽藍神像などを安置する。堂前にあるビャクシン（白槙、和名イブキ）の古木7本は開山蘭渓道隆手植えと伝えるもので、樹齢約750年といわれる。
禅宗以外の寺院の「講堂」に相当する建物。入母屋造、方三間、裳階（もこし）付き、銅板葺き。文化11年（1814年）の上棟、文政8年（1825年）の竣工である。棟梁は建長寺大工の河内久右衛門。内部には身舎・裳階の境に柱が立つのみで間仕切りはない。床は瓦の四半敷きとする。堂内中央奥に高さ2メートルを超える法座を設け、その奥に本尊千手観音坐像を安置する。なお、天井の雲龍図は、鏡天井に直接描かれたものではなく、別に制作された絵を掲げたものである。鎌倉最大級の木造建築で2005年に重要文化財に指定された。
天井画は小泉淳作筆の雲龍図。2005年愛知万博に陳列されたパキスタンのラホールにあるラホール中央博物館所蔵の釈迦苦行像のレプリカが愛知万博終了後にパキスタンより寄贈され、安置された。
建長寺 伽藍
重要文化財で方丈入口の門。仏殿と同じく、芝の徳川秀忠夫人崇源院霊屋から移築したもの。関東大震災以来の大修理が2011年5月に終了し、移築当時の姿が再現された。
「竜王殿」とも称する。総門と同じく、京都の般舟三昧院から移築したもの。庭園は夢窓疎石の作といわれる。
高さ20mを超える五重塔（一説に三重塔）があったが、参道建設時に塔跡は壊され現在は石碑が残るのみ。
境内のもっとも奥、山の中腹にある、建長寺の鎮守である。
ここに祀られる半僧坊権現は、1890年に当時の住持であった霄（おおぞら）貫道禅師が静岡県引佐郡奥山（現・浜松市浜名区）の方広寺から勧請した神で、火除けや招福に利益があるという。半僧坊権現とは、後醍醐天皇皇子の無文元選禅師（前述の方広寺開山）の元に忽然と現われ、無理やり弟子入りした白髪の老人で、神通力を持っており、無文禅師が死去するとその老人もまた姿を消したという。
半僧坊へ上る石段の途中には天狗の像がある。
境内にはこのほか、江戸時代初期の豪商・河村瑞賢の墓や、織田長益（有楽斎）のものとされる墓などがある。
建長寺 塔頭
塔頭（たっちゅう）の本義は、祖師や高僧の墓塔を守るために、師の徳を慕う弟子らが建立した小寺院を意味するが、転じて大寺院の境内周辺に建てられた小寺院を指す。建長寺には最盛期には49か院の塔頭があったが、現在は境外塔頭を含め12か院を残すのみである。塔頭のうち常時公開されているのは境外塔頭の円応寺（新居閻魔堂）のみ。長寿寺は春秋などに時期を限って公開、妙高院、龍峰院は観音霊場巡りの巡礼者のみ入れる。他の塔頭は原則非公開である。
西来庵（せいらいあん）
開山蘭渓道隆の墓塔を守る塔頭寺院である。山門の右手にある嵩山門（すうざんもん）が入口だが、そこから先は修行道場のため、一般の立ち入りは禁止されている。開山蘭渓道隆の墓塔（石造無縫塔）、蘭渓の肖像彫刻を安置する開山堂とその手前に立つ昭堂（重要文化財）などがある。昭堂は寛永11年（1634年）頃の建立である。
妙高院（みょうこういん）
第28世肯山聞悟（こうざんもんご）の塔所。山号は若昇山。貞和二年（1346年）頃の創建とされる。本尊は宝冠釈迦如来（札所本尊は聖観音）。このほか肯山聞悟坐像（天保9年の銘あり）がある。鎌倉三十三観音霊場27番札所。
建長寺 塔頭
同契院　（どうけいいん）
第31世象外禅鑑の塔所。本尊は十一面観音。元は円覚寺山内にあったが、応安7年（1374年）に火災に遭い、その後建長寺に移転した。移転後も享保21年（1736年）に火災に遭い、客殿・庫裏が消失したと記録に残る。
宝珠院（ほうしゅいん）
第35世了堂素安の塔所。山号は竹園山。本尊は釈迦如来（旧本尊は地蔵菩薩だが盗難に遭い消失）。本院の庫裏に作家の葛西善蔵が大正8年より寄宿し、執筆をおこなった。後年関東大震災で被災したため、帰京する。
龍峰院（りゅうほういん）
第15世約翁徳倹の塔所。山号は蓬莱山。本尊は聖観音。徳治2年(1307年）の創建。鎌倉三十三観音霊場29番札所。
天源院(てんげんいん)
第13世南浦紹明（なんぽじょうみん）の塔所。山号は雲閑山。本尊は釈迦如来。
正統院（しょうとういん）
第14世高峰顕日の塔所。山号は天津山。本尊は文殊菩薩。もとは浄智寺にあったが、夢窓疎石によって建長寺に移された。境内地はもと無学祖元の塔所として建てられた正続院の跡地である。正続院は円覚寺に移されている。境内の墓地にあるやぐら内に特攻隊の戦死者を祀る「神雷戦士之碑」が建つ。碑は1965年3月21日に建立され、特攻による戦死者829名と特攻機のテスト機殉難者の氏名や階級・出身地が刻まれている。
建長寺 塔頭
回春院（かいしゅんいん）
方丈の裏手から半僧坊へ向かう道の途中を右に折れた谷戸の奥に位置する。第21世玉山徳璇（4字目は王偏に「旋」）の塔所。山号は幽谷山。本尊は文殊菩薩。
華蔵院（けぞういん）
第60世伯英徳俊の塔所。境外塔頭。民有地にあり、立入禁止となっている。
禅居院 （ぜんきょいん）
建長寺総門から県道を挟んだ向かい側に位置する。第22世清拙正澄の塔所。山号は石屏山。本尊は聖観音。
長寿寺
足利尊氏の菩提のため、子の足利基氏（関東管領）が建立。開山は古先印元。本尊は釈迦如来。
円応寺
別名新居閻魔堂。もとは由比郷、続いて材木座に移転し、近世に現在地に移転した。本堂には閻魔王を含む冥界の十王像を安置する。桑田道海（智覚禅師）の開創というが定かでない。
建長寺 文化財
梵鐘 - 山門右手の鐘楼に架かる。高さ約2.1メートル。建長寺創建当時の数少ない遺品の1つとして貴重である。建長7年（1255年）、鋳物師物部重光の制作。銘は蘭渓道隆が撰（作文）し、筆を執ったもので、文字は陽鋳（字形が彫り込まれるのではなく立体的に浮き出している）となっている。撞座の位置が高い点など、全体に復古的な作風を示す鐘である。銘文中の「建長禅寺」は、日本における「禅寺」の語の初見とされている。
※典拠：2000年（平成12年）までの指定物件については、『国宝・重要文化財大全 別巻』（所有者別総合目録・名称総索引・統計資料）（毎日新聞社、2000）による。それ以降の指定物件については個別に脚注を付した。
境内は1966年（昭和41年）9月12日、「建長寺境内」として国の史跡に指定されている。庭園は1932年（昭和7年）7月23日、「建長寺庭園」として国の史跡および名勝に指定されている。「建長寺庭園」の指定範囲は仏殿前のビャクシンの植栽と、方丈裏の庭園である。
建長寺 文化財
参拝者や、修学旅行生を含む観光客が年間で約50万人訪れる。大人500円、子供（小中学生）200円の拝観料が必要。前述のように、坐禅修行に使う僧坊などは拝観対象外である。
指定文化財のうち、国宝の梵鐘は随時見学可能。その他の書画、工芸品の大部分は鎌倉国宝館に寄託されており、同館の展示で順次公開されるほか、例年11月3日前後に3日間行われる「宝物風入れ」という行事の際、寺内で公開される。なお、近くの円覚寺でも同時期に同様の「宝物風入れ」が実施される。
クロスサイトスクリプティング
クロスサイトスクリプティング（英: cross-site scripting、略称XSS）とは、他のユーザーが利用しているWebアプリケーションにスクリプトを挿入することができてしまう脆弱性、もしくはそれを利用した攻撃。脆弱性情報データベースのCWEでは、この攻撃を不適切な入力確認 (CWE-20) によるインジェクション (CWE-74) のひとつとして分類している (CWE-79)。略称はXSS。かつてはCSSという略称も使われていたが、Cascading Style Sheetsと紛らわしいのでこの略称はあまり使われなくなった。
「クロスサイト（サイト横断）」という名称は歴史的なもので、初期に発見されたXSSでは脆弱性のあるサイトと攻撃者のサイトを「サイト横断的」に利用して攻撃を実行することから名づけられたものだが、XSSの定義は新しいタイプの攻撃が見つかるたびに拡張され、サイト横断的なものでなくともXSSと呼ぶようになった。
この拡張された定義においてXSS攻撃とは、攻撃者の作成したスクリプトを「脆弱性のある標的サイトのドメインの権限において」閲覧者のブラウザで実行させる攻撃一般を指す。斜体で書いた部分がXSS攻撃の重要な特徴であり、この特徴により標的サイトの権限がないと実行できないようブラウザが制限している（同一生成元ポリシー）はずの行動を、攻撃者に実行可能にしてしまう。
クロスサイトスクリプティング 概要
XSSについて述べる前に、ウェブサイトの仕組みについて簡単に復習する。JavaScriptのようなクライアントサイドのスクリプトは、ウェブサイトが閲覧者が取った行動（例えばフォーム に何を記載したか）を変数の形で取得し、取得した変数値に応じて動的にHTMLを生成する。
セキュリティの観点から見た場合スクリプトには非常に強い権限が与えられている為、これを悪用された場合には大きな危険を伴う事になる。具体的にはスクリプトを使えばブラウザに保管されているcookieの内容を読み書きする事も可能であるし、ログイン時にはサイトからユーザ固有の情報を読み書きする事も可能である。さらにはそうした情報を別のサイト（例えば攻撃者のサイト）に転送する事も可能である。
こうした事情によりウェブブラウザには同一生成元ポリシーという、スクリプトの悪用を制限するためのポリシーが実装されている。このポリシーは、「ウェブページ１に記載されたスクリプトがそれとは別のウェブページ２に関するデータにアクセスできるのは、ページ１と２が同一の「オリジン」にある場合のみである」とするものである。ここでページ１と２のオリジンが同一であるとは、１と２のプロトコル、ホスト名（FQDN）、ポート番号の3つが一致する事を指す。
クロスサイトスクリプティング 概要
多くのケースにおいて同一のウェブサイト上にあるページは同一のホスト上において同一のプロトコル(http)と同一ポート番号(80番)で動作するものなので、同一生成元ポリシーはウェブサイトを構築する上であまり邪魔にならない。しかし攻撃者が全く別のサイトからスクリプトによってデータを不正に読み取ろうとしたとしても同一生成元ポリシーがこれを妨げるのでセキュリティは担保される。
XSS攻撃は、ウェブサイト（標的サイト）の脆弱性(XSS脆弱性)を利用する事で、標的サイトの権限で悪意のあるコンテンツ（多くの場合スクリプト）を実行する事を目的として行われる。悪意のあるコンテンツは標的サイトの権限で実行されるので、同一生成元ポリシーによる制限が迂回される。これを悪用する事により攻撃者は標的サイトを閲覧したユーザ（＝被害者）のcookieを盗むなど、様々な攻撃を行う。
クロスサイトスクリプティング 概要
CWE-79ではXSS攻撃を以下のような攻撃として特徴づけており、XSS脆弱性をXSS攻撃を可能にする脆弱性として特徴づけている。XSS攻撃を行う攻撃者は標的サイトへのデータ入力経路に不正なデータを注入（インジェクション）する。ここでいう「データ入力経路」は正規のユーザのために用意された入力経路（例えばフォーム）の場合もあればそうでない場合もあり、標的サイトのウェブアプリケーションへのWebリクエスト全般が狙われる。また不正なデータはスクリプトなどWebブラウザで実行可能な悪意のあるコンテンツを含んだものが用いられる。
このインジェクションの結果、標的サイトのウェブサーバが攻撃者の用意した不正データを含んだウェブページを動的に生成する。この生成されたウェブページを被害者となるユーザが閲覧すると、不正なデータに含まれる悪意のあるコンテンツが標的サイトの権限により被害者のブラウザ上で実行され、攻撃が成功する。
XSS攻撃に用いる「Webブラウザで実行可能なコンテンツ」は何らかのスクリプトである事が多いので、本稿では以下、特に断りがない限りスクリプトのケースについて述べる。
クロスサイトスクリプティング XSS脆弱性とXSS攻撃の詳細
本節ではXSS脆弱性とXSS攻撃の詳細を具体例を通して述べる。
すでに述べたように、ウェブサイトではユーザがフォームなどで入力した値を変数として持ち、変数にセットされた値に応じてその後の動的なページ内容の生成が行われ、その際には変数値そのものがページに表示されることもある。XSS脆弱性の簡単な例としてはユーザが値を決定できる変数値を加工せずそのままウェブページに表示（エコーバック）してしまうというものがある。具体的には以下のようなシチュエーションでXSS脆弱性が生じる事が多い：
そこで最初に挙げた確認ページのシチュエーションにおける脆弱性を利用したXSS攻撃の例を述べる。今、標的サイト example.comのウェブページにユーザの性別を選択させるフォームがあり、そのページではユーザが選択した値（"man"もしくは"woman"）を変数genderにそのまま保管し、genderの内容を以下のようにそのまま表示する事でフォームの内容をユーザに再確認させるページを動的に生成するとする（再確認ページのURLはフォームのあるページのURLと同一でも異なってもよい）。
具体的にはたとえばPHPで
もしくは
というスクリプトが書かれていた場合である。
このようなページにおいて、攻撃者が何らかの方法でgenderの値を
クロスサイトスクリプティング XSS脆弱性とXSS攻撃の詳細
にセット（＝スクリプトのインジェクション。 詳細後述）し、この状態で被害者となるユーザがこのページにアクセスしてしまうとXSS攻撃は成功となる。
実際、標的サイトのウェブページには、変数genderの値をそのまま表示するページを動的に生成してしまうという脆弱性があるので、攻撃者が前述のようにgenderをセットした状態で被害者となるユーザがこのページを閲覧してしまうと、ウェブサイトは動的に生成したHTML
を被害者のブラウザに送りつけてくるため、悪意のあるスクリプトが被害者のブラウザ上で自動的に実行されてしまう。
なお、ウェブサイトの作者がgenderの値としてフォームに準備した値が「man」と「woman」の２つだけだったとしても、実際にgenderにセットされた値が「man」か「woman」のいずれかであることを、ウェブサイトを置いているサーバ側でチェックしない限り、攻撃者はそれ以外の値（＝悪意のあるスクリプト）にgenderをセット可能である。
次に攻撃者が悪意のあるスクリプトをインジェクションする方法を述べる。方法はウェブページにどのようなXSS脆弱性が存在するのかに依存するので、ここではフォームの入力値の２通りの送信方法(GETメソッド、POSTメソッド)に応じてインジェクション方法を２通り述べる。
クロスサイトスクリプティング XSS脆弱性とXSS攻撃の詳細
なお、ここで説明する例はいずれも、後述するXSSの分類では「反射型」に属する。
GETメソッドでは変数の値がURLに明記されるので、フォームの内容をユーザに再確認させるページのURLは
のような形になっている。
そこで攻撃者は被害者となるユーザに以下のURLにアクセスするよう何らかの方法（たとえばexample.comを装った罠メールにこのURLを記載）で促す：
するとgenderが悪意のあるスクリプトにセットされたページを被害者が閲覧することになるので、攻撃が成功したことになる。
ここで重要なのは、上記のURLが「http://example.com/」から始まる事である。これが原因でユーザはexample.comの何ら問題のないWebページだと誤解してしまい、上記のURLをクリックしてしまう可能性がある。
なお、ここでは悪意のあるスクリプトを標的サイトのURLに埋め込む方法を紹介したが、URLの長さには上限がある関係上、埋め込めるスクリプトの長さが制限されてしまうため、攻撃者が行える攻撃の種類が制限されてしまう。
長さに制限のないスクリプトを埋め込むには、攻撃者は自分のサイトを立ち上げ、そこに悪意のあるスクリプト「http://（攻撃者のサイト上の悪意のあるスクリプト）」をおいた上で、被害者に
を閲覧させればよい。
クロスサイトスクリプティング XSS脆弱性とXSS攻撃の詳細
ただしこちらの攻撃の場合、攻撃者のサイトのURLがウェブサーバのログに残るため、これを手がかりにサーバ管理者が攻撃者を特定できる可能性がある。したがって攻撃者は自身のサイトの場所を頻繁に変えるなど追跡の手を逃れる手段を講じる必要がある。
上述したGETメソッドの例ではURLに変数の値がそのまま表示されている事が攻撃者にXSS攻撃を可能にしてしまった原因の一つである。しかしURLに変数の値が表示されないPOSTメソッドを使った場合でもXSS攻撃が可能である。以下、POSTメソッドを前提にして話をすすめるが、GETメソッドに対しても同様の方法でインジェクションが可能である。
標的サイトにXSS攻撃を仕掛けるため、攻撃者は自身でウェブサイト（罠サイト）を立ち上げ、そこに以下のようなHTMLを書く：
被害者が罠サイトを表示してしまうと、フォームhogeのinput文においてgenderが（悪意のあるスクリプト）にセットされた状態で標的サイト「http://example.com/」が表示されてしまうので、被害者のブラウザで悪意のあるスクリプトが実行されてしまう。
しかもこのinput文はhidden指定なのでgenderの値は被害者のブラウザ上に表示されず、被害者はこの事実に気づかない。
クロスサイトスクリプティング XSS脆弱性とXSS攻撃の詳細
上で説明した「GETメソッドのみに適用できる例」ではユーザがアクセスした攻撃用サイトには「入力した性別は以下のもので正しいでしょうか」といった文章が表示されてしまうため、攻撃を受けたことにユーザが気づいてしまう可能性があるが、攻撃者が悪意のあるスクリプト部分の冒頭に
というJavaScriptを記載しておけば、HTML本文が完全消去されるため、上述のような不自然な文章は表示されない。
これに続けて（JavaScriptのdocument.writeメソッドを使って）攻撃に必要な内容をスクリプト部分に自由に記述可能となる。
別の隠蔽工作方法として、罠サイトでHTMLのiframeタグとCSSを用いるというものがあり、この方法には攻撃者にとって上で述べた隠蔽工作とは違った利点がある（詳細後述）。なおiframeとはウェブページを入れ子にするためのHTMLタグで、ウェブページA上にウェブページBのURLを指定したiframeタグを書くと、A上に四角いフレームができ、その中にBの内容が表示される。これを利用して攻撃者は以下のように隠蔽工作を図る。
まず攻撃者は罠サイトのページAにiframeタグを書くことで、悪意のあるスクリプトを埋め込んだ標的サイトのURLを読み込む。具体的には、ページAに
と記載する。
クロスサイトスクリプティング XSS脆弱性とXSS攻撃の詳細
さらにCSSを書くことでiframeの内容が表示されたフレームがAの閲覧者には見えないようにする。この状態で被害者を誘導してページAを開かせると、iframeにより自動的に悪意のあるスクリプトを埋め込んだ標的サイトが読み込まれるので、攻撃が成功する。
この隠蔽工作の利点は、攻撃に用いたiframeはCSSで隠しているので、標的サイトと全く無関係に見える罠サイトを被害者が開いただけで攻撃が完了し、しかも罠サイトのURLにも不自然なところはないので、被害者にとって罠サイトと通常サイトを見分ける手段が無いことである。
「GETメソッド、POSTメソッド双方に適用できる方法」に対しても同様にiframeとCSSで隠蔽工作が可能である。こちらの場合、攻撃用のフォームを書いたページBを罠サイトに作成し、BをiframeでページAに読み込んだ上でCSSによりiframeを隠せばよい。
被害者がページAを閲覧すると、iframe内は悪意のあるスクリプトを埋め込んだ標的サイトに遷移するという不自然な動きをするが、CSSでiframeを隠しているので被害者はこのことに気づかない。
XSS攻撃に用いる「Webブラウザで実行可能なコンテンツ」の例として、CWE-79では以下のものを挙げている：
HTML内には攻撃者が悪意のあるスクリプトをインジェクションし得る箇所として以下のものがある：
2.の場合、URLとして「javascript:(JavaScript文)」の形式(javascriptスキーム)を利用してJavaScriptを注入することができる。
クロスサイトスクリプティング XSSの被害
攻撃者はXSSを用いることで、例えば以下の様な被害を発生させられる：
攻撃者は標的サイトexample.comで任意のスクリプトを実行可能なので例えばスクリプトに以下の様なhtmlのフォームを生成させる事でユーザが入力したID/パスワードを攻撃者のサイトに転送させる事ができる：
クロスサイトスクリプティング 攻撃手法の分類
CWE-79ではXSSの攻撃手法を以下の３種類に分類している：
反射型XSSでは、攻撃者は不正なデータDをWebページPのURLなどに仕込んでおり、Dが原因でWebアプリケーションが作るPのhtml本文などに悪意のあるスクリプトが含まれる。被害者がWebページPのURLをクリックすると、Pの内容とともに悪意のあるスクリプトが被害者のブラウザに送信され、ブラウザ上で悪意のあるスクリプトが実行される事で被害が生じる。したがって攻撃者が反射型XSSの脆弱性を利用するには、被害者をPに誘導する方法を別途考える必要がある。
反射型XSSにおいて攻撃者が被害者をWebページPに誘導する方法は主に２つある。第一の方法は、標的サイトとは別のWebサイト（公開掲示板や攻撃者自身のWebサイトなど）にPのURLを張り、被害者がPへのリンクをクリックするのを待つ方法である。第二の方法は標的サイトを装って被害者にメールし、そのメール本文にPのURLを記載することで、被害者がPを閲覧するのを期待する方法である。
クロスサイトスクリプティング 攻撃手法の分類
一方、格納型XSSでは、攻撃者は不正なデータDを標的サイトのデータベース、メッセージフォーラム、訪問者のログといったデータストアに保存する。たとえば電子掲示板に格納型XSSの脆弱性がある場合、攻撃者は不正なデータDを含んだ書き込みを掲示板に対して行う。すると掲示板システムはDを自身のデータストアに保存し、正規の利用者が掲示板を訪れるたびにDを含んだ書き込みを表示するため、この書き込みを表示した利用者全員がXSSの被害者になりうる。格納型XSSは正規サイトのデータストアそのものに不正なデータを仕込むので、反射型XSSと違い被害者に不正なURLをクリックさせる必要がない事が攻撃者にとっての利点の一つである。
クロスサイトスクリプティング 攻撃手法の分類
反射型および格納型のXSSではWebアプリケーション側が悪意のあるスクリプトを含んだWebページPを作り出す事が原因で、Pを閲覧した被害者が被害を受ける。それに対しDOMベースXSSは、ブラウザなどのユーザ・クライアントが悪意のあるスクリプトを含んだWebページを生成するタイプのXSSの総称である。DOMベースXSSは、スクリプトを使った以下のような動的html生成(DOM操作)を利用する。一般にユーザがWebサイトにアクセスすると、Webアプリケーションはユーザ・クライアントに対し、（悪意のない正規の）スクリプトSを含んだhtmlを送り返すことがある。ユーザ・クライアントはこのhtmlを受け取ると、htmlに含まれるスクリプトSを実行することで、htmlを書き換え、画面に出力する最終的なhtmlを得る。
DOMベースXSSではこの仕組みを悪用し、ユーザ・クライアント側で実行されるスクリプトSに不正なデータDを注入することで、XSS攻撃を実行する。Dを注入する箇所としては反射型XSSと同様、URLなどを利用する。
他の２つのXSSとは異なり、Webアプリケーション側ではDOMベースXSS攻撃が行われていることを感知できない。したがって例えばWebアプリケーション側にWAFを導入するなどの対策を施してもこの攻撃を検知したり防いだりする事はできない。
というのもDOMの仕組みでは、スクリプトSに注入される不正なデータDは、Webアプリケーションではなくユーザ・クライアント側で取得し、ユーザ・クライアント側でDが注入されたスクリプトSを実行するので、Webアプリケーション側には不正なデータDが一切伝わらないからである。
クロスサイトスクリプティング 対策
すでに述べたように、XSSへの対策としてはユーザからフォームの値を取得した際、htmlで特別な意味を持つ記号を以下のように別の記号に置き換える（エスケープ処理をする）という方法がある：
このようにすると攻撃者が攻撃用スクリプトを埋め込むのに利用したhtmlのタグ「<script>」は「&lt;script&gt;」という無害な文字列に置き換わってしまうので上述したXSS攻撃を回避できる。
なおエスケープ処理は例えばPHPのhtmlspecialchars関数を利用する事で実現可能である。
しかしこのような対策には限界があり、#インジェクション箇所で述べた、スクリプトが直接記述可能な箇所やURLを記述可能な箇所に対しては、この対策は効かない。
エスケープが必要な記号として、「<」、「>」、「"」などがある。「<」と「>」をエスケープする必要がある理由の一つはすでに具体例で挙げたように「<script>」を無効にするためである。「"」をエスケープする理由は以下で述べる。
クロスサイトスクリプティング 対策
HTML中で属性値を引用符でくくっていても適切な対策（属性値中で引用符「"」をエスケープ）をしない限り、XSS対策にならない。たとえば
のように青色で示した入力値inputvalが引用符でくくられていたとしていても
攻撃者が
というURLを被害者にクリックさせると、被害者のブラウザでは（HTML中では%3dが「=」に変換されるので）
となってしまうので、onmouseoverイベントハンドラによりマウス移動時に悪意のあるスクリプトが実行されてしまう。
ケイ素
ケイ素（けいそ、珪素、硅素、英: silicon、羅: silicium）は、原子番号14の元素である。元素記号はSi。原子量は28.1。「シリコン」とも呼ばれる。