![](/img/trans.png)
[英]EventValidation - Missing __EventValidation value in few requests
[英]Fake __EVENTVALIDATION in Microsoft Ajax
我正在為網站制作移動應用程序以查看您的日程安排。 他們不提供任何API,也無意提供任何API。
該網站只能使用Ajax,但要偽造這些請求並刮掉我需要偽造__EVENTVALIDATION
帖子字段的網站。
我對網站沒有任何控制權,而且我從未使用ASP.NET或Microsoft Ajax構建任何東西。
有沒有人這樣做過?
我發現__EVENTVALIDATION
字段有這種模式( ...
表示字節根據請求,base64解碼版本的hexdump而改變):
d8 01 16 13 02 4f 0a ... f6 e0 84 d4 05 02 a0 3f e2 3f 03 02 3f d8 d1 d5 0c 02 bb 82 cf ec 08 02 b4 b5 99 f8 0b 02 3f 89 3f eb 04 02 d5 83 90 88 0a 02 8a db 94 90 03 02 8b cf 3f 85 08 02 93 3f b1 3f 06 02 9b 3f 8f a5 02 02 b5 b4 af 85 01 02 d1 fc ae 9c 0e 02 b4 e2 94 9e 0a 02 3f e2 94 9e 0a 02 3f e2 94 9e 0a 02 bb 92 80 a5 06 ...
在構建ASP.NET站點的scraper之前,我已經解決了這個問題。 您需要請求瀏覽器用戶通常會登陸的初始頁面,提取__VIEWSTATE
和__EVENTVALIDATION
哈希,然后使用這些來對您實際需要的數據進行第二次請求。
例如,如果您正在從表單提交中抓取響應:
如果你正在尋找JavaScript函數從標記中提取哈希,我已經在GitHub上發布了我用作ms-viewstate的那些。
__EVENT
VALIDATION
是一項安全措施 。
該功能可防止潛在惡意用戶從客戶端發送未經授權的請求。 為確保每個回發和回調事件都源自預期的用戶界面元素,該頁面會在事件上添加額外的驗證層。 該頁面基本上將請求的內容與__EVENTVALIDATION字段中的信息進行匹配,以驗證客戶端上是否未添加額外的輸入字段,並且在服務器上已知的列表上選擇該值。 該頁面在呈現期間生成事件驗證字段 - 即在信息可用時的最后可能時刻。 與視圖狀態一樣,事件驗證字段包含一個哈希值以防止客戶端篡改。
哈希值基於服務器級別的密鑰。 所以你不能復制那個哈希 - 或者更確切地說,如果你沒有訪問服務器,我猜你發現了一個安全漏洞。
REF: MSDN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.