0
1

More than 1 year has passed since last update.

40代おっさんFastAPI、MongoDB連携メモ 認証関係②

Posted at

本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
などありましたらコメントにてお知らせいただければ幸いです。

CORS

オリジン間リソース共有 (Cross-Origin Resource Sharing, CORS ) は、追加のHTTPヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えようウェブアプリケーションは、自分とは異なるオリジン (ドメイン、プロトコル、ポート番号) にあるリソースをリクエストするとき、オリジン間HTTPリクエストを実行します。

オリジン(Origin)

Originとは

<scheme> "://" <hostname> [ ":" <port> ]

scheme: https,http
hostname: google.comなど
post : 443など

これがすべて同じになるのが同一オリジンとみなされる

Cross

オリジン単位でのアクセス制御可能
Requestは送信できるが、Responseは受け取れないなどの制限をかけれる

XSS

クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性を利用し、記述言語であるHTMLに悪質なスクリプトを埋め込む攻撃です。クロスサイトスクリプティングの英語表記「Cross Site Scripting」の略称として「XSS」と表記する場合もあります。

  • 不正なサイトに誘導されアクセス
  • 不正なJavaScript codeが実行される
  • 被害者のブラウザのCookieを読み取られて外部に送信されお供養される

対策

httpOnlyと言うCookieの属性があり、それをtrueにすることでJavaScriptから読み取れなくする。

CSRF

クロスサイトリクエストフォージェリ(CSRF)とは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまいます。

  • 不正なサイトに誘導されアクセス
  • Cookieが自動送信されるので不正なDB操作などが行われる(不正書き込みなど)

対策

正規サイトからのリクエストが判別する仕組みが必要
CSRF Tokenを使う

CSRF Token

  • 正規サイトアクセス時にServerからCSRF Tokenを発行する
    • GET:api/csrf_token
  • DB操作(Create,put,Delete)request時に、headerにCSRF Tokenを付与する。Server側で正規のリクエストか検証する。
  • 外部サイトからCSRF Token発行requestをしてもCORSによりResponseを読みれない。

SameSite

SameSiteというのはCookie設定の1つの属性となります。
SameSiteには3つの設定を行うことが可能です。
None、Lax、Strictの3つとなります。

セキュリティレベルの高さの指定となり、None(なし)、Lax(緩い)、Strict(厳しい)の順番でセキュアに対するセキュリティレベルを示しています。

シングルアプリケーションの場合はNoneにしてCookieの送受信を可能する

Secure:true -> httpsで暗号化された通信のみCookie使用可能

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1