質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

対象外のオリジンからのアクセスを制限したい。

HelloWorld2
HelloWorld2

総合スコア0

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0評価

2クリップ

38閲覧

投稿2019/04/15 08:41

※ソースコードベースの質問ではなく、「あるべき論」、「方針」に関する質問です。初心者のため、そもそもの認識に誤りがあるかもしれませんが、ご指摘、ご鞭撻頂けると幸いです。

やりたいこと

  • 対象のWebサイトのHTML内に、JavaScriptのタグを埋め込み、そこから自作のAPIを実行し、ajaxのpost通信でデータを送信します。
  • apiは、AzureのFunctionsを用いてC#で作成します。(今回の質問にはあまり関係ありません)
  • apiを実行できるWebサイトを、特定のOriginに限定します。

現状

  • api側でCORSの設定を行い、JavaScript内のajax送信の際、「contentType」に「application/json」を設定することで、プリフライトリクエストを送り、対象外のOriginからのapiの実行を防ごうとしています。

問題点

  • ajaxで「contentType」の指定を外して実行された場合、プリフライトリクエストは送れず、対象外のOriginからのapi実行は防げない認識です。(レスポンスはされないが、実行はされる)
  • したがって、悪意のあるリクエストからapiを守るために、CORSの設定以外の対策が必要だと考えております。

質問内容

  • 特定のOrigin以外からのapi実行を防ぐためには、どうすれば良いのでしょうか・・・?

考えていること

  • 無知の私の考えでは、api側で対象のOriginをすべて保持し、api側のソースコード内で、HttpRequestのリクエストヘッダのOriginヘッダを取得し、対象のOriginに含まれるかどうかを判定し、trueの場合apiを実行する、という考えしか思い浮かびません。。。(そもそもOriginヘッダの書き換えできるなら、悪意のあるサイトは弾けませんが・・・)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。