ハッカーなどの悪意ある攻撃からシステムを守る技術をご紹介します。以下の基本的な事を正しく理解できてないシステム会社が意外に多く存在します。あなたのWebシステムは大丈夫でしょうか?以下の内容を試してみると脆弱が見つかるかもしれません。
原因:
サイト訪問者の入力により動的に生成される様な個所でセキュリティが足りない部分を狙った攻撃です。
掲示板等やブログ等でも一部のHTMLタグの利用を許可しているタイプ(画像を埋め込んだり、文字の色や大きさを変えたり)がありますが、一般的にはHTMLタグは、利用できない様に規制されています。
しかし、HTMLタグの入力規制処理が全く行われてない場合は、HTMLタグやJavascriptを埋め込む事が可能となり、悪意あるプログラムが実行できてしまいます。
★ツイッターやfacebookでも利用者の意思に関係なく悪意ある書き込みを勝手に行ってしまうスクリプトが埋め込まれた事があります。
仕組解説:
この悪意あるプログラム内に悪意あるサイトへ遷移する様なコードが書かれていた場合、サイト閲覧者は知らないうちに、その悪意あるサイトへ移動してしまいます。
例えば、クレジットカード番号を入力する様なサイトに悪意あるプログラムが埋め込まれた場合、クレジットカード番号を悪意あるサイトへ送信してしまう可能性があります。
対策:
プログラマが慎重に対応するのも当然ですが、テストが十分に行われていない事によって発見されていない様です。
対策としては、入力内容をHTMLエンティティへ変換し表示させる事によりほとんどの問題が解決されます。
インジェクションとは、注入と言う意味で、本来実行するべきSQL以外のSQLも注入するという意味合いです。データベースの内容を改竄したり、情報を盗みとったりする手法です。
原因:
サイト訪問者の入力により動的に表示条件や登録情報を更新する様なデータベースと連動したWebシステムやサイトでセキュリティが足りない部分を狙った攻撃です。
検索条件を入力すると検索結果一覧が表示される様な画面や入力した内容がデータベースへ登録される様な画面では、入力した内容が、SQL文に埋め込まれデータベースへ向かって命令を実行されます。入力部に検索させる条件以外の条件も追加してしまい、本来閲覧できない様なレコードも表示させてしまいます。
仕組解説:
対策:
対策としては、ダブルクォーテーション、シングルクォーテーション、アンダースコア、等のSQL文で意味を持つ文字をエスケープシーケンスでエスケープさせます。また、数値入力等は、数字以外の文字が入力されたかを入力文字チェックで監視させます。
トラバーサルとは、横断する、斜面等を横切って進むことを意味しディレクトリ、もしくは、パスを渡ると言う意味で、パスワードファイル等、重要なファイルを盗みとる手法です。
原因:
サイト訪問者の入力により動的に表示ファイルを切り替える様な仕組みの場合に使用される攻撃です。
ファイル名を直接指定する様な仕組みはなかなか存在しないですが、何がしかのカテゴリにより表示先を変える様な仕組みの場合に、このセキュリティーホールが潜む場合がある。
手口解説:
対策:
ユーザーの入力やURLのパラメータへファイル名を指定できる様な仕組みにしない様な設計にします。