1

このログイン ページを見てください。具体的には、Returning Member というラベルの付いたセクションのフォームです。HTML を見るか、Firebug などのツールで掘り下げることで確認できるように、実際のフォームには 4 つのタグが含まれています。メール アドレスとパスワード用に 1 つずつ、値「yes」を含む「memberAlready」と呼ばれる非表示の入力、画像形式の送信ボタン。これまでのところ、完全に一般的です。

ただし、フォームが送信された時点でフォーム データを調べると ( Tamper Dataまたは別のブラウザーで同等の機能を使用して)、次の 2 つの追加のフォーム フィールドが応答に忍び込んでいることがわかります: ACTION(loginCheckout).x ACTION(loginCheckout).y.

どちらも 2 桁の整数値を持っています。これは、送信者が実際の Web ブラウザーであり、ロボットではないことを確認するためだけに存在することを示唆しています。おそらく、それらは次のように定義されている送信ボタンに何らかの形で関連しています。

<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">

私が混乱しているのは、ブラウザーで JavaScript が無効になっている場合でも、これらの追加のフォーム フィールドが表示されることです。したがって、それらはおそらく、イベント ハンドラーによってどこかに挿入されたものではありません。

さらに、フォームをプログラムで送信すると (たとえば、JavaScript コンソールで document.forms[1].submit() を実行することにより)、余分なフィールド生成されず、ログイン試行が失敗します。これは、フィールドの挿入が、基本的な HTML フォーム送信メカニズム以外の何かに依存していることを示唆しています。しかし、それが JavaScript でなければ、その「もの」が何であるかはわかりません。

誰かがこのパターンを認識していますか、または検証フィールドがどのように挿入されるかについて理論を持っていますか?

4

2 に答える 2

4

ここに投稿したコードを見てください。

<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">

これは、ログイン フォームの送信に使用される画像入力タイプであることに注意してください。送信時に挿入されるように見える追加の値は、フォームを送信するために画像をクリックした場所の x 座標と y 座標です。これらは、フォーム送信時に JavaScript によって挿入される追加の値ではなく、ブラウザー自体によって追加されます。

画像の別の領域をクリックしてみて、値が変化することを確認してください。

JavaScript を使用してフォームを送信する場合、画像をクリックしないため、フォームの送信時に x と y の値が含まれません。

要素の画像を置き換える<input type="submit" />と、x 座標と y 座標が削除されます。

それが役立つことを願っています。

于 2012-04-12T01:22:47.290 に答える
1

表示されている X と Y の値は、送信ボタンが入力タイプ = イメージであるためです。これらは、画像がクリックされたときにカーソルがあった画像内の X および Y 位置に対応します。HTML 仕様で必要なため、ブラウザー自体によって追加されます。セクション 17.4.1 では、画像入力タイプについて次のように述べています。

ポインティング デバイスを使用して画像をクリックすると、フォームが送信され、クリック座標がサーバーに渡されます。x 値は画像の左端からのピクセル単位で測定され、y 値は画像の上端からのピクセル数で測定されます。送信されたデータには name.x=x-value と name.y=y-value が含まれます。「name」は name 属性の値であり、x-value と y-value はそれぞれ x と y の座標値です。

ポインティング デバイスの使用についてのみ言及されていることに注意してください。キーボードを使用して送信すると、値は作成されません。

于 2012-04-12T01:21:07.960 に答える