続きです
ブラウザはどのように受動攻撃を防ぐか
➡サンドボックス・・・プログラムでできることが限りがある。
悪意のあるプログラムを作ろとしても、利用者に被害が及ばないように配慮
サンドボックスでできないこと ①ローカルファイルへのアクセス禁止
②プリンタなどの資源の利用禁止
③ネットワークアクセスの制限
脆弱性はどこで発生するのか?
①脆弱性には処理に起因するものと出力に起因するものがある
②入力に起因する脆弱性はない
③出力起因する脆弱性にはインジェクションという単語がつくものが多い
入力処理とセキュリティ
入力処理では入力値に対して
①文字エンコーディングの妥当性検証
➡PHPでは mb check encoding関数が使える
②文字エンコーディングの変換
➡PHPでは mb convert encoding関数
③パラメータ文字列の妥当性検証
まとめ これらはセキュリティの根本的な対策にはならない。
ただ、プラットフォームやアプリケーションに洗剤ていな脆弱性がある場合はセーフティーネットになりうる。
表示処理に伴う問題
表示処理が原因になるもの
①クロスサイト・スクリプティグ(XSS)
②エラーメッセージからのリーク
◎XSSの脆弱性の影響
①サイト利用者のブラウザで、攻撃者の用意したスクリプトの実行によりクッキー値を盗まれ、利用者が成りすましの被害にあう。
②同じくブラウザでスクリプトを実行させられ、サイト利用者の権限でwebアプリの機能を悪用される
③webサイトに偽りの入力フォームが表示され、フィッシングにより、利用者が個人情報が盗まれる。
発生個所・・・・wabアプリケーションでHTML,JAVA Scriptを生成している場所
影響を受けるページ・・・アプリ全体
影響の種類・・・・サイトの利用者のブラウザ上でのJava Scriptの実行、偽情報の表示
影響の度合い・・・中から大
利用者関与の度合い・・・必要➡罠サイトの閲覧、メール記載のURL
対策・・・・・属性値は”で囲む、HTMLで特別な意味を持つ記号文字をエスケープ
SQL呼び出しに伴う脆弱性
SQLインジェクション
①発生箇所・・・SQLを呼び出しているところ
➡エラーメッセージ経由、union select等
②影響を受けるページ・・・すべてのページ
③影響の度合い・・・・大
④利用者関与の必要性・・・ない
⑤対策・・・・静的プレースホルダーを利用
脆弱性が生まれる原因
文字列リテラルの問題
対策・・・・プレースホルダ(特に静的)を使ってSQLを組み立てる。*プレースホルダとは、実際の内容を後から挿入するために、とりあえず仮に確保した場所のこと。
アプリケーション側でSQLを組み立てる際に、リテラルを正しく構成して変更されないようにする。