第1章 セキュアWebプログラミング
この章ではプログラミング言語によらず,Webプログラミングで起こりがちなセキュリティ問題と,それを避けるためのプログラミング方法について説明しています。
JavaScriptなどのクライアント側スクリプトによる入力データのチェックは,ユーザの利便性に寄与してもセキュリティを守る手段には使えない。
Webページに入力データをおうむ返しに表示している部分があると,ページ内に悪意のスクリプトが埋め込まれ,それを見たユーザとサーバ自身の両方に被害を及ぼす「クロスサイトスクリプティング」という不正の手口に利用されてしまう。
会員サービスサイトや商品販売サイトのWebアプリケーションを構築する際,ユーザ認証のしくみを組み込むことが不可欠である。しかし,注意して実装しないと,うっかり大切なID を露出してしまったり,肝心なWeb ページが実は保護されていなかったりする場合がある。
クエリストリングはWebページ間で手軽にパラメタを受渡しできる方法であるが,ユーザの目に最も触れやすく改竄が容易である。また,ブラウザが生成するRefererヘッダにより他のWebサイトにも情報が漏れる。クエリストリングには決して重要な情報を含めてはならない。
Webページ間のデータの受渡しにフォームのhiddenフィールドは便利である。しかし,いったんWWWブラウザに渡った情報は外部に漏洩するのはもちろん,改竄のおそれが大きい。重要な情報はhiddenフィールドに入れてはならない。
Web ページにあらかじめ選択肢を埋め込む<SELECT> の<OPTION>タグや,ラジオボタン,チェックボックスなどの値をWebアプリケーションプログラムは盲信してはならない。悪意のあるユーザがHTMLファイルを細工して,Webアプリケーションプログラムが用意した以外の<OPTION>やラジオボタンの値を送り返すことは実に容易だからである。