wasbook reading #10
「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」読書会の第10回。
今回読んだのは以下の範囲。
- 6章 文字コードと セキュリティ
6章 文字コードと セキュリティ
6.1 文字コードとセキュリティの概要
僕はJavaを使う上で、何度か文字コードについて勉強したけど、ちょっと複雑でややこしい。まずはこれを意識する必要がある。
文字字コードとは、以下の2つの概念を合わせたものと考えられます。
6.2 文字集合
文字集合は、そのままだけど文字を集めたもの。厳密には、さらに符号をつけた文字集合のことを符号化文字集合という。本ではあわせて「文字集合」という用語で統一されている。
具体的にはASCIIとかISO-8859-1とかJIS X 0213とか。
そして文字に割り当てられたコードが、文字集合によってことなる場合がある。
ISO-8859-1およびUnicodeでは、0xA5の場所に円記号「\」が割り当てられていますが、日本 では歴史的にバックスラッシュの位置0x5Cに円記号「\」を割り当てていました。
¥や\は、プログラムで特別な意味を持つことがある。そこでエスケープ処理などが抜けると、脆弱性になってしまう可能性がある。
6.3 文字エンコーディング
次に文字エンコーディング。文字集合には符号がついているけど、いろいろな文字集合がある。そのため複数の文字集合を併用する必要がある。それをなんとかするために「文字エンコーディング」がある。
具体的にはShift_ JISやEUC-JP、UTF-16やUTF-8とか。
繰り返しになってしまうけど、Unicodeは文字集合、UTF-8は文字エンコーディングになる。
まとめ
サーバのOS、Webサーバで扱う文字コード、APサーバで扱う文字コード、DBサーバで扱う文字コードなどを確認し、統一できないのであれば早めに動作確認を行う。
wasbookの文字コードの章は、とてもよくまとまっていると感じた。分量がほどほどで、細かすぎることもなく、わかりやすかった。
あわせてこちらも読んでおくと、理解が深まると思う。(wasbookと使っている用語が異なるので、ちょっと混乱するかもしれないけど。)
- いいから聞け! 俺が文字コードについて教えてやるよ その1(前提知識編) - 谷本 心 in せろ部屋
- いいから聞け! 俺が文字コードについて教えてやるよ その2(Javaの文字コード編) - 谷本 心 in せろ部屋
- いいから聞け! 俺が文字コードについて教えてやるよ Advent Calendar 特別編 - 谷本 心 in せろ部屋
wasbookに関するものは、こちらのタグで。
電子書籍版はこちら。