日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【HTTP】另类的POST头数据 RFC1867协议格式简析

發(fā)布時間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【HTTP】另类的POST头数据 RFC1867协议格式简析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
昨天在實戰(zhàn)表單模擬提交的時候,有發(fā)現(xiàn)在提交某個表單的時候,頁面(discuz!論壇)報錯,無法檢測到數(shù)據(jù)來源云云,但是我確實提交了http_referer了啊,怎么會出現(xiàn)這個情況呢?問了下haohappy,他給了個pear的類,http/client,才發(fā)現(xiàn),我研究了幾天的東東,原來有個現(xiàn)成的可以用,“使用pear站在巨人的肩膀上”,這個果然沒有錯。過些天組裝一個client試試看。 ? 又扯遠了,書歸正傳,說研究一下一個另類的post頭,為什么說另類呢,因為一般的post頭的 Content-Type:?application/x-www-form-urlencoded 而他的是 Content-Type:?multipart/form-data; boundary=-------7d71f4234700b8 ? 那么兩者的區(qū)別又在那里呢? ? 1、做過表單html的coder都知道,在需要有上傳文件操作的時候,表單的類型必須是enctype="multipart/form-data",那么這里也就這個原因,究其根源,可以追溯到RFC1867協(xié)議,這個協(xié)議主要是在HTTP協(xié)議的基礎上為INPUT標簽增加了file屬性,同時限定了Form的method必須為POST,ENCTYPE必須為multipart/form-data。 ? 2、后者增加了boundary,所謂的boundary其實就是分割線,RFC1867利用boundary分割HTTP實體數(shù)據(jù)。boundary中數(shù)字字符區(qū)是隨機生成的 ? 3、對HTTP實體的變更

因為RFC1867增加了文件上傳的功能,而上傳文件內(nèi)容自然也會被加入到HTTP的實體中?,F(xiàn)在因為既有HTTP一般的參數(shù)實體,又有上傳文件的實體,所以用boundary把每種實體進行了分割,HTTP的實體看起來將是類似下面的樣子:??

-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="formhash"


59329e15
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="isblog"




-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="fid"


104
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="subject"


test
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="iconid"


0
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="usesig"


1
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="message"


test
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="attachperm[]"


0
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="attachdesc[]"




-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="attach[]"; filename=""
Content-Type: application/octet-stream




-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="attachperm[]"


0
-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="attachdesc[]"




-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="attach[]"; filename=""
Content-Type: application/octet-stream




-----------------------------7d71f4234700b8
Content-Disposition: form-data; name="wysiwyg"


1
-----------------------------7d71f4234700b8--

很明顯,增加了文件上傳后,HTTP實體變得稍微復雜了,首先是通過boundary把實體分開,以便于讀取,然后對FileUpload的格式也作了限制。

?

4、那么同樣,這種格式也是需要提供Content-Length屬性的,那么和簡單的post數(shù)據(jù)頭相比較,就可以發(fā)現(xiàn),變化的地方有:

......

Content-Type:

......
Content-Length:

......

數(shù)據(jù)體?goes here~

注意到這幾個地方的變化后,就可以像往常一樣post了

?

寫在最后的,在這個實戰(zhàn)post過程中,我使用了wsockexport這個軟件進行抓包操作,使得整個過程簡化了很多,在這里向作者表示敬意,(BTW:rising對其中的hook.dll似乎不怎么喜歡,大家用的時候,請關閉殺毒軟件,或者加入白名單)

總結

以上是生活随笔為你收集整理的【HTTP】另类的POST头数据 RFC1867协议格式简析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。