質問するログイン新規登録

Q&A

解決済

1回答

814閲覧

クロスドメイン環境構築

退会済みユーザー

退会済みユーザー

総合スコア0

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/04/22 08:41

編集2019/04/24 02:03

0

0

開発環境で CSRF 関連の挙動を再現したいのですが
クロスドメイン環境を docker で再現することは可能でしょうか

追記:

いままでAPIサーバー単独で認証とレスポンスをこなしていたのですが
セキュリティ要件の都合で認証部分を別サーバーに分離しました
(やったのは自分ではないのでこの辺の仕組みもいまいち理解できていません)

APIと認証サーバーは開発環境では同一サブネットにあるdockerコンテナで
そこで動作確認してステージング環境にデプロイを行ったところ
APIサーバー側で
CSRF validation failed, Possible hacking attempt detected
というエラーが出て API が動きません

ステージング環境ではAPIと認証サーバーが別ドメインにあるので
そのせいなのかなと何となく予想している程度です

CSRFは別サーバーのスクリプトで別サーバーにリクエストにいかないように
HTML(JS)にトークンをうめこんで自サーバーのスクリプトからのリクエストであることを確認するもの

程度の認識しかないのですが
ユーザはAPIのみとしかやりとりせず認証サーバーはAPIからのみしかアクセスしないので
完全に別コネクションになってるはずなのでなぜこのようなエラーが出るかも謎です

なのでまずは開発環境でクロスドメイン環境にしてエラーが再現するか調べたいという段階です

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

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

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

guest

回答1

0

ベストアンサー

CSRFならwebサーバーひとつあれば検証するのに問題ないのでは?

クロスサイトリクエストフォージェリ - Wikipediaなのですよね?


追記:構築環境

イメージ説明

投稿2019/04/22 08:58

編集2019/04/24 02:36
Y.H.

総合スコア7918

退会済みユーザー

退会済みユーザー

2019/04/24 01:51

個人で使えるウェブサーバーというものがありません ステージング環境があるにはありますがプルリクエストを通してチーム全員の承認を得る必要があり いろいろ試すには効率が悪いので開発環境の docker 内で CSRF エラーを再現したいと思っています
Y.H.

2019/04/24 02:00

では、dockerでwebサーバーつ構築(A)と(B)。 クライアントPCのhsotsに、 (A)のサーバーHTTPでアクセスする際のIPをwww.example.comとして登録 (B)のサーバーHTTPでアクセスする際のIPをwww.example.jpとして登録 で、クライアントPCのブラウザからアクセスすれば、できますよ。 ・(A)www.example.comがCSRF対策を行うhttpサービス ・(B)www.example.jpがCSRFのリクエストを行わせるためのhttpサービス
Y.H.

2019/04/24 02:03

もしくは、(A)だけあれば、curlコマンドやwgetコマンド、Windows標準であればpowershellのInvoke-WebRequestコマンドレットで、CSRFを引き起こすリクエストを(A)に発行し検証可能です。
退会済みユーザー

退会済みユーザー

2019/04/24 02:08

丁寧にありがとうございます 早速試してみたいと思います ちなみにホストの /etc/hosts だけで docker 内の構成は変更する必要はないのでしょうか AからBはプライベートネットワーク内にあるのですが docker host が違っているのでもとからクロスドメイン環境になっているということでいいのでしょうか
CHERRY

2019/04/24 02:09

(横からですが...) この回答は、「Web サーバーがあれば検証できるから、docker で Web サーバーを構築すればいいのでは?」という回答でしょう。
Y.H.

2019/04/24 02:14

docker 内の構成は変更不要です。 ただし、NameベースのVirtualHostでhttpリクエストのServerヘッダーを見ていたり、Webサービス内でURLのFQDN部を固定している場合は必要になります。 ブラウザがwebサーバーにアクセスする際に使用するためだけにhostsを追加します。
退会済みユーザー

退会済みユーザー

2019/04/24 02:18

>docker で Web サーバーを構築すれば docker も先人の作ったイメージをダウンロードして使ってるだけで docker-compose.yml を変更してポートやアドレスを変える程度のことしかできません ましてサーバー構築なんて完全に未経験なので本当にそれが必要なら覚えるしかないんですが… 今回のエラーはそれができないとどうしようもない感じでしょうか…
退会済みユーザー

退会済みユーザー

2019/04/24 02:20

> docker 内の構成は変更不要です。 ありがとうございます > VirtualHost httpd.conf を見る限り特殊なことはやっていないように見えます…
Y.H.

2019/04/24 02:39 編集

今私が認識している環境を追記しましたので参考にしてください。(1台のPCにすべて構築する想定) 右の緑部分がDockerで構築するものです。 左の水色部分がクライアント部分です(ブラウザでアクセスするためのもの)
退会済みユーザー

退会済みユーザー

2019/04/24 03:44

丁寧にありがとうございます APIを使用するウェブサービスというのはなく (あるにはあるのですが大半はスマホアプリから直接APIを叩いていていまそちらを含めてCSRFエラーが出ています)
Y.H.

2019/04/24 03:56 編集

なら、下のふたつのみでOK。サーバー構成など全体の構成を知っているのは質問者さんのみなので適当に読み替えてください。 そもそも、何をもって「CSRF validation failed, Possible hacking attempt detected」と判定しているのかがわからないのでアドバイスできるのはここまでが限界だと思います。
退会済みユーザー

退会済みユーザー

2019/04/24 04:02

重ね重ねありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問