2020/06/17

やったこと

競技プログラミング

- AGC015A A+...+B Problem:解けた

 

・安全なWebアプリケーションの作り方

- SQLインジェクションSQLの呼び出し方に不備がある脆弱性。DB内の任意のデータが漏洩し、任意のデータを書き換えることができるため、非常に危険な脆弱性

- SQLインジェクションの対策:プレースホルダによるSQL組み立て。SQL中の変数や式などの可変のパラメータの場所に?を埋め込み、値をバインド

- 静的プレースホルダ:値のバインドをデータベースエンジン内で行う

- 動的プレースホルダSQLを呼び出すアプリケーション側のライブラリ内で、パラメータをバインドしてからデータベースエンジンに送る。

- 原理的にSQLインジェクションの可能性がないという点で静的プレースホルダの方が優れている

- CSRF脆弱性:罠のサイトなどを閲覧しただけで、利用者のブラウザから勝手に「重要な処理」を実行される

- CSRF対策:CSRF対策の必要なページを区別する。正規利用者の意図したリクエストを確認できるよう実装する

- 正規利用者の意図したリクエストかどうかを判定する方法

  - 秘密情報(トークン)の埋め込み

  - パスワード再入力

  - Refererのチェック

- 重要な処理の実行後に、対象利用者の登録済みメールアドレスに対して、処理内容の通知メールを送信することを推奨

- クリックジャッキング:iframeとCSSを巧妙に利用し、透明にした攻撃対象ページと罠のサイトを重ね合わせ、利用者が気づかないうちに攻撃対象サイトでのクリックを誘導する攻撃手法

- クリックジャッキングの対策:レスポンスにX-Frame-Optionsヘッダをつけ、frameなどの内側に表示されることを禁止