2020/06/15

ABC170、D問題がどうしても解けず3完。これが解けると水色も目指せるようになってくるんだろうなぁ…

 

やったこと

競技プログラミング

ABC170D Not Divisible:解けなかったので復習。O(N√N)からO(NlogN)に変えて解けるように。なるほど。

 

・ansible

inventory: 作業対象

playbook: 作業の中身。ロールを呼び出す

role: タスクや変数定義、テンプレートなどをひとまとまりにしたディレクトリ構造

ansible-galaxy installでロールをインストールする

sudoを実行したいときは、playbook内でbecomeディレクティブを利用

 

参考

https://employment.en-japan.com/engineerhub/entry/2019/04/12/103000

https://knowledge.sakura.ad.jp/3124/

 

・サウナ

外気浴のときに色々と考えを巡らせられて良い

 

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

- Refererヘッダ:リンク元のURLを示すヘッダ

- HTTP認証を使わない場合はサーバ側で認証状態を覚えておく必要がある:セッション管理。cookieを利用

- セッションIDに求められる要件

  - 第三者がセッションIDを推測できないこと

  - 第三者からセッションIDを強制されないこと

  - 第三者にセッションIDが漏洩しないこと

- クッキーのHttpOnly属性:JavaScriptからアクセスできないクッキーを設定するもの

- 能動的攻撃:攻撃者がWebサーバに対して直接攻撃

- 受動的攻撃:攻撃者がサーバを直接攻撃するのではなく、Webサイトの利用者に罠をしかけることにより、罠を閲覧したユーザを通してアプリケーションを攻撃する手法

- 同一オリジンポリシー:JavaScriptなどのクライアントスクリプトからサイトをまたがったアクセスを禁止するセキュリティ上の制限

- 同一オリジンの条件

  - FQDNが一致

  - スキームが一致

  - ポート番号が一致

- XMLHttpRequestについては、相手側の許可があれば同一オリジンでなくても通信できるCORSという規格が策定されている

- CORS: 従来の同一オリジンポリシーに依存するアプリケーションとの互換性を保ちながら、異なるオリジンとのデータ交換を可能にする

- クロスオリジンからの読み出しを許可するために、情報の提供元がAccess-Control-Allow-Originヘッダを出力する

- シンプルなリクエストでない場合(リクエストとしてjsonを送る場合など)は、ブラウザはプリフライトリクエストを送る。そのプリフライトリクエストには、Access-Control-Request-Method, Access-Control-Request-Headersが含まれるため、レスポンスとしてAccess-Control-Allow-Methods, Access-Control-Allow-Headersを返す必要がある。

- 認証情報を含むリクエストの場合、Access-Control-Allow-Credentialsがレスポンスヘッダに必要となる