Webセキュリティ - tech-is/student-wiki GitHub Wiki
スクリプト挿入攻撃
サイトのコンテンツに対してjavascriptやVBScriptなどを挿入し、サイトを訪れた第三者に対して悪意のあるコードを実行させる攻撃方法 この攻撃を受けた場合、サイトを訪れた第三者は
- ウイルスに感染させるような悪意のあるサイトにリダイレクトさせられる。
- COOKIEなどの情報を盗まれ、サイトの管理者権限を乗っ取られる
対策方法
関数を使い、出力時にタグの無効化をする。
関数名:htmlspecialchars
(codeigniterの場合以下で除染)
$data = $this->security->xss_clean($data);
クロスサイトスクリプティング
XSSはスクリプト攻撃と同様にサイト訪問者に対してjavascriptやVBScriptを実行させる攻撃方法。 スクリプト攻撃と違うのが攻撃対象とは異なるサイトやメールなど間接的な手段を介して悪意あるコードを実行させる点です。
対策方法
関数を使い、出力時にタグの無効化をする。
関数名:htmlspecialchars
(codeigniterの場合以下で除染)
$data = $this->security->xss_clean($data);
クロスサイトリクエストフォージェリ
ユーザが意図しない操作をユーザ自身の権限を用いて実行させる攻撃手段です。たとえば認証によるログインが必要なサイトに対して、そのユーザが実際に投稿などを行うのと同じように意図しない操作をおこなわせることが可能。 例:知らない間にブログの記事が全て消えていた 会員パスワードが知らない間に変更されていた
対策方法(codeigniterの場合)
codeigniter/application/config/config.php で以下の行を変更すると自動的に対策される。 $config['csrf_protection'] = TRUE;
SQLインジェクション
SQLインジェクションはデータベースに対する命令文に対して意図しない命令を挿入する事で、データベースに保存されているデータを改ざんしたり盗み出したりする攻撃方法です。
対策方法(codeigniterの場合)
Active Record クラスを利用する。Active Record
使わない場合は $this->db->escape() を利用する。
例:$query = $this->db->query("SELECT * FROM post WHERE id = {$this->db->escape($id)}");
セッション固定攻撃・セッションハイジャック
任意のセッションIDを強制的に利用させるのがセッション固定攻撃です。 codeigniterではセッションを安全に使用する為に以下のencryption_keyを設定します。 encryption_key設定