※ソースコードベースの質問ではなく、「あるべき論」、「方針」に関する質問です。初心者のため、そもそもの認識に誤りがあるかもしれませんが、ご指摘、ご鞭撻頂けると幸いです。
やりたいこと
- 対象の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ヘッダの書き換えできるなら、悪意のあるサイトは弾けませんが・・・)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/16 01:44 編集
2019/04/16 02:15