PHPに関するセキュリティのまとめ その1
まなんだことその1
「セキュリティ、攻撃方法とその対策について①」
(基本)
・バリデーションチェック : 入力された値が正しいか確認を行い処理を継続するかチェックする
・エラーメッセージからの情報漏えい : 入力の誤りについて詳細なエラー内容を表示してしまいパスワードなどを破る手がかりにつながる
→対策 : 必要以上に詳細なエラー内容を表示させない
・権限の設定 : 最低限必要な利用者にのみ必要最低限のアクセスを許可する
①スクリプト挿入攻撃(直接) : 掲示板などの入力フォームに悪意のあるHTMLタグやJavaScriptを送信する攻撃
対策:htmlspecialchars()を使い、特殊文字をエスケープする
②XSS(クロスサイトスクリプティング)(間接) : 攻撃用の別のサイトを介して悪意のあるHTMLタグやJavaScriptを送信する攻撃
対策:特殊文字をエスケープ、文字エンコードを適切に指定
③CSRF(クロスサイトリクエストフォージェリ) : 不正Webページにアクセスすると、不正Webページ内のリクエストが攻撃対象サーバに送られログイン情報などが抜き取られる
対策:セキュリティソフトなどで不正サイトへのアクセスをブロックする
利便性は落ちるがワンタイムトークンの発行
④SQLインジェクション : データベース操作のクエリを改ざんし、データを不正に取得したり改ざんする攻撃
対策:プリペアドステートメントを利用
(→事前にSQL文の雛型を設定し、その中に変数となる部分を指定しておく
変数となる部分に値を代入することで、SQL文の構造自体は改ざんされることなく実行することができる)