0

自分の管理下にない外部サイトのフォームにデータを投稿する必要があります。ユーザーが 1 つの場所にデータを入力してから、各フォームを個別に入力するのではなく、同様のフォームを収容する複数の外部サイトに投稿できるようにするツールを構築しています。

基本的に、ワークフローは次のようになります。

  1. ユーザーがマイページの包括的なフォームに記入する
  2. このデータは私のデータベースに保存されます
  3. ユーザーは、外部フォームへのリンクを含むサンキュー ページにリダイレクトされます
  4. リンクのいずれかがクリックされると、新しいウィンドウが開き、フォームのフィールドが部分的に一致し、フォームのフィールドが一致する必要があります

この最後のステップはハックなものです。私は外部フォームが適切にコーディングされていることに依存しているので、不十分なデータ (キャプチャやその他の必須フィールドがいくつか欠落している) でフォームに投稿すると、フォームに組み込まれた投稿データでそのページがリロードされることを期待しています。データが欠落しているフィールドがマークされています。このようにして、ユーザーは不足しているデータのみ (理想的にはキャプチャのみ) を入力することができ、同じデータを再入力するためにさらに 1 時間費やす必要がなくなります。

これは、curl post を実行してもうまくいかないことを意味するため、次の JS アプローチを採用しました。

function repostForm(id, url) {    

var map = fieldMap[id];  // this is map between my field names and external form field names

// construct form 
var form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', url);   
form.setAttribute('target', '_blank');

for (i=0; i<map.length; i++) {
    var input = document.createElement('input');
    input.setAttribute('name', map[i].external);
    input.setAttribute('value', submissionData[map[i].local]);
    form.appendChild(input);
}

document.body.appendChild(form);
form.submit();

}

このコードは正常に実行され、データが外部フォームに投稿されていることがわかります。ただし、一部のフィールドが欠落している部分的に入力されたフォームを表示する代わりに、空白のフォームが表示されます。

今のところ2つの異なるフォームでこれを試しましたが、どちらもそのように機能します。

これらのフォームに追加のセキュリティ チェック (HTTP リファラー フィールドのチェックなど) が含まれているのは運が悪いのでしょうか、それともより基本的なレベルで何かが欠けているのでしょうか? 情報が機密である可能性があるため、これらのフォームへのリンクを送信することはできません。したがって、この基本的なアイデアが機能するかどうか、理想的なケースでは、すべてが適切に適合するかどうか、または根本的な欠陥があるかどうかに興味があります。

エッジケースが割り当てられることはわかっており、原則としてのみ関心があります。

事前に感謝します

4

1 に答える 1

0

「ただし、一部のフィールドが欠落している部分的に入力されたフォームを表示する代わりに、空白のフォームが表示されます」
まあ、サーバー側の部分はまだ部分的に入力されたフォームを表示する必要があり、その「ポストレシーバー」のコーダーがその機能をコーディングしなかった場合そのコードでは、コンピューターに関連するすべてのことと同様に、「何かをするように指示しなければ、それは実行されない」という普遍的なルールが当てはまります。

それと、HTTP Referer フィールドや、人々が外部のフォーム投稿から保護するために使用するその他のトリックなどです。

ユーザーが制御するプロキシサーバーを介して外部サイトに移動すると、それを回避できます...ヒント。php でコーディングし、(php で) html/ecmascript を解析 (または正規表現を試行) し、ソースにフィールドを設定して、変更したソースをユーザーに送信できます。それは一種の「中間者」(攻撃) です。

このソリューションを使用するときは、最終的にハッカーのレーダーにさらされることに注意してください。ユーザーが多いほど、システムをクラックしてすべてのおいしいユーザーデータを取得することの「賞金」が大きくなるためです! 同様に、「彼ら」がそのプロキシ サーバーを乗っ取ることができた場合 (ユーザーは、あなたが悪用しないと信じています)、すべてのユーザーの無数のユーザー アカウントにアクセスできます。

幸運を!

于 2013-03-28T13:04:50.623 に答える