2020/06/18

やったこと

競技プログラミング

- ABC073C Sentou:解けた

 

・安全なWebアプリケーションの作り方:4.6~4.11再読

- セッションハイジャック:第三者がセッションIDを悪用して成りすますこと

- 第三者がセッションIDを知るための手段:セッションIDの推測、盗み出し、強制

- セッション管理不備の対策

  - セッション管理機構を自作せずWebアプリケーション開発ツールのものを使う

  - クッキーにセッションIDを保存する

  - 認証成功時にセッションIDを変更する

  - 認証前にはセッション変数に秘密情報を保存しない

- オープンリダイレクト脆弱性:任意のドメインにリダイレクトできる。フィッシングに悪用される可能性。リダイレクト先のURLは固定にする

- HTTPヘッダインジェクション:レスポンスヘッダを出力する際のパラメータ中に改行を挿入することで、被害者のブラウザ上で任意のレスポンスヘッダの追加・レスポンスボディの偽造を行う。外部からのパラメータをHTTPレスポンスヘッダとして出力しない

- クッキーはセッションIDの保管場所として利用すべきであり、データそのものをクッキーに保存することはよくない

- クッキーにはSecure属性があり、これを指定したクッキーはHTTPSの場合のみブラウザからサーバに送信される。Secure属性のついていないクッキーは平文で送信される場合があり、盗聴される可能性がある。

- Domain属性:デフォルト状態が最も安全。

- HttpOnly属性:JavaScriptから参照できなくなる。セッションIDをJSから参照する意味はないのでつけるほうが良い。

- ディレクトリトラバーサル脆弱性:ファイル名に対するチェックが不十分である場合、アプリケーションの意図しないファイルに対して閲覧・改ざん・削除ができる脆弱性。ファイル名を外部から指定することを避ける

- OSコマンドインジェクション脆弱性:言語のシェル呼び出し機能を用いて、意図しないOSコマンドを実行される脆弱性。OSコマンド呼び出しを行う実装は避けたほうが良い。