2012-04-12 21 views
1

查看this login page,具體來說,標有「退回成員」一節中的表格。正如您可以通過查看HTML或使用Firebug等工具進行驗證一樣,實際表單包含四個標籤:電子郵件地址和密碼各一個,名爲「memberAlready」的不可見輸入包含值「yes」,和一個圖像形式的提交按鈕。到目前爲止,完全通用。但是,如果您在提交表單的位置檢查表單數據(在另一個瀏覽器上使用Tamper Data或其等效方法,則會看到另外兩個表單字段已被潛入響應中:ACTION(loginCheckout ).x和ACTION(loginCheckout).y。Mystery .x和.y表單字段 - 這些是從哪裏來的?

它們都有兩位數的整數值,這表明它們只是用來驗證提交者是一個真正的瀏覽器而不是機器人。在某種程度上涉及到提交按鈕,它的定義如下:

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

什麼confusi對我來說,即使在瀏覽器中禁用了JavaScript,這些額外的表單域也會出現。所以他們可能不只是某個事件處理程序插入的東西。此外,如果以編程方式提交表單(例如,通過在JavaScript控制檯中運行document.forms [1] .submit()),則額外字段不會生成,並且登錄嘗試失敗。這表明插入字段取決於基本的HTML表單提交機制之外的東西。但是,如果它不是JavaScript,那麼這個「東西」可能會是什麼,我不知道。

有沒有人認識到這種模式或有理論如何驗證字段被插入?

回答

1

您所看到的X和Y值是因爲提交按鈕是一個輸入類型=圖像。它們對應於單擊圖像時光標所在圖像中的X和Y位置。它們由瀏覽器本身添加,因爲HTML specification需要它。第17.4.1節規定,對於圖像輸入類型

當使用指針設備單擊圖像時,將提交表單並將點擊座標傳遞給服務器。 x值以圖像左側的像素爲單位進行測量,y值以圖像頂部的像素爲單位進行測量。提交的數據包括name.x = x-value和name.y = y-value,其中「name」是name屬性的值,x-value和y-value分別是x和y座標值。

你會注意到它只提到了使用指點設備。如果使用鍵盤提交,則不會創建值。

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座標。

希望有所幫助。

+0

謝謝 - 我希望我能接受這兩個答案。 – GSnyder 2012-04-12 04:02:41

+0

沒問題,很樂意幫忙。 ;) – 2012-04-12 23:37:22