web-dev-qa-db-ja.com

HTMLフォームにIPv4経由での送信を強制する

次のような単純なHTMLフォームを含むWebページがあります。

<form method="POST" action="/something">
  <input type="text" name="something">
  <input type="submit" value="Send">
</form>

これがホストされているサーバーがIPv4とIPv6の両方で到達可能である場合、Webサーバーを変更せずにこのHTMLフォームPOSTをIPv4で実行するように強制する方法はありますか?

アクションとして1.2.3.4/somethingを試してみると、Hostヘッダーがないため、失敗します。そして、IPv4アドレスだけを含むv4.example.comのようなサブドメインを作成すると(そしてv4.example.com/somethingを使用して)、そのサブドメインはApache構成に含まれず、そのvHostに割り当てられます。

HTMLフォームを変更するだけで、クライアントにそのフォームをIPv4経由で送信させることができますか?または、それを行うためにApache構成を変更する必要がありますか?

2
Florian Bach

同じインターネット接続テストとして、これは欠陥があります。

  • V4アドレスの比較では、ユーザーエージェントがNATの背後にあると想定しています。これにより、パブリックアドレススペースが再構築されるときの柔軟性が低下します。
  • キャリアグレードNATは、v4アドレスを顧客の数を知っている人が共有できることを意味します。
  • マルチホーミングは比較的簡単です。同じIPは、3つまたは4つの異なるISPを経由するパスを持つことができます。
  • V6がないと、v6はNAT64を介してクライアントのみを強制します。このテストの精度を向上させない共有リソース。どちらかといえば、それはあなたのユーザーを困らせるでしょう。
  • 別のネットワークからのトラフィックを表示できるVPNが存在します。

フォーム送信者が特定の組織またはサイトに関連付けられていることを確認するには、アカウントログインまたは同様の識別子を使用します。

接続がどこから来ているかを特定するには、インターネットルーティングテーブルを検索するか、ジオロケーションAPIを使用します。

4
John Mahowald

これを行う唯一の方法は次のとおりです。

フォームをv4.example.comに送信します。これには、フォームを送信するWebサーバーのAレコードのみが含まれます。

Webサーバーで、v4.example.comドメイン名を使用して仮想ホストをセットアップするか、既存の仮想ホストに追加のドメインとしてv4.example.comを追加します。

次に、対処する必要のあるクロスドメインの問題が発生する可能性があります。

2
Tero Kilkanen