1. ホーム
  2. html

[解決済み] クロスドメインフォームのPOST送信

2022-04-22 13:41:35

質問

このトピックに関する記事や投稿をあちこち(SOを含む)で見ましたが、same-origin policyによってドメインをまたいだフォームPOSTはできないというのが一般的なコメントです。 唯一、same-origin policyがフォーム投稿に適用されないことを示唆している人を見たのはここだけです。 はこちら .

もっと正式なソースからの回答が欲しいです。 例えば、same-originがフォームのPOSTにどのように影響するか、しないかを扱うRFCをご存知の方はいらっしゃいますか?

明確化 : GETまたはPOSTを構築して、任意のドメインに送信できるかどうかを尋ねているのではありません。 聞いているのです。

  1. Chrome、IE、Firefox がドメイン 'Y' からのコンテンツがドメイン 'X' に POST を送信することを許可するかどうか。
  2. POSTを受信したサーバーが、実際にフォームの値をまったく見ないかどうか。 オンラインディスカッションの大半で、サーバーがポストを受信したが、フォームの値はすべて空であった/削除されたというテスターが記録されているため、このように言っています。
  3. どのような公式文書(RFCなど)が、期待される動作を説明しているか(ブラウザが現在何を実装しているかは関係なく)。

ちなみに、もしsame-originがフォームPOSTに影響しないのであれば、アンチフォージェリ・トークンが必要な理由が多少明らかになります。 というのも、攻撃者が単に HTTP GET を発行してアンチフォージェリ トークンを含むフォームを取得し、その同じトークンを含む不正な POST を作成できると考えるのはあまりにも安直だからです。 いかがでしょうか?

解決方法は?

同一生成元ポリシーは、ブラウザ側のプログラミング言語に対してのみ適用されます。そのため、JavaScript を使用してオリジンサーバとは異なるサーバに投稿しようとした場合、同じオリジンポリシーが適用されますが、フォームから直接投稿した場合、つまりアクションが異なるサーバを指している場合は、次のようになります。

<form action="http://someotherserver.com">

で、フォームの投稿にjavascriptが関与していない場合は、同じオリジンポリシーは適用されません。

参照 ウィキペディア 詳細はこちら