ウェブサイトにおけるセキュリティ対策

2018年06月11日

ここでは、当社が開発に関わった案件において、基本的なセキュリティ対策について述べたいと思います。

開発に関わったウェブサイトから見る

セキュリティーについて説明する前に、その対象となるサイト制作案件の簡単な概要を述べます。

サイトはこれから大学受験をしようという学生向けの大学進学サイトです。オープンキャンパス・学校説明会の予約とったり資料請求ができるものでした。

学校情報が詳細に記載されていて分かりやすく、ログインして、自分でカスタマイズしたマイページを作成できます。自分で好きな大学・学部を指定して資料請求を一括で行ったり、オープンキャンパスの予約も可能で、PCと携帯からも利用できて便利なサイトでした。

開発の言語はPerlとCでCGIとして、DBはオラクルです。 開発者とデザインを分離した制作体制で特にロジック寄りのところを担当しました。また、SQLまわりの見直しも行い、これはオラクルの実行計画を取ったりして見直しました。実行計画を取るとDBの処理が、想定した動きになっているか把握でき、特にINDEXがどういう順番で使っているか分かります。これらをSQLチューニングといいます。

セキュリティについて

このようなウェブサイトでしたが、特に当社では外部からアタック防止のところを重点的に考え検証計画と検証を行いました。

ウェブのセキュリティーについていくつか重要な要素がありますが、そのうち対策として重要なのは次の2点です。

1.SQLインジェクション

SQLインジェクションとは、DBへの操作を実行するプログラムにパラメータとしてSQL文の一部を付与することによってDBの内容を不正に操作し情報を得る攻撃です。ですので、対策を行っていないサイトに対して、SQL文を知っている人が不正なコードを書くと、DBの内容を消されたり、DB内容を不正に取られたりします。

対策としては、入力値がSQL文として実行されないようにすること。すなわち、入力値をエスケープする、バインド変数を利用した方式でプログラム内のSQLを記述する等の修正を行います。

世の中にはシステムを表裏を知っていて、悪意のある人がいるのでこの辺注意が必要です。

2.クロスサイトスクリプティング(XSS)

XSSとは、悪意のあるユーザがメールフォームや掲示板などにおいて、JavaScriptなどのスクリプトを入力することです。サイトのプログラムにチェックする機能がないと、悪意のあるスクリプトがそのままHTMLに埋め込まれます。それで、そのページを見た別のユーザーがそのスクリプトで被害を受けるというものです。

この対策として大切なのは、フォーム・インプット部分にユーザーからの入力内容をそのまま表示させないことです。特にJavaScriptなどコードを判別して、さらにそれを無効化させるように処理することが大切です。

これらのウェブシステムにおけるセキュリティの処理・作業は開発者としては、義務だと思います。ウェブシステムを開発するにあたってこのようなポイントは特に緻密に配慮していきたいところです。