久久久国产精品,成人无码精品1区2区3区免费看,日韩男人天堂,午夜77777

鄭州信息科技中專職業(yè)學院中專部

不僅僅統(tǒng)招學歷喲

  • 熱門專業(yè)!
  • 大學校園!
  • 就業(yè)保障!
  • 拿學歷又能高薪就業(yè),誰能不愛!
了解詳情>
鄭州北大青鳥翔天信鴿參加“安心學習·放心就業(yè)”公約簽約儀式

讓每一個家庭“安心”、“放心”

  • 教學為本
  • 師愛為魂
  • 安心學習
  • 放心就業(yè)
了解詳情>
北大青鳥20周年慶典與總部年會鄭州翔天信鴿榮獲7項榮譽

深耕細作IT職業(yè)教育15載

  • 青鳥之星教學質(zhì)量大獎
  • 卓越風云人物
  • 北大青鳥中心理事會成員
  • 七項榮耀載譽而行!
了解詳情>
鄭州北大青鳥學員喜獲全國IT精英挑戰(zhàn)賽冠軍

我們教學怎么樣

  • 實力見證
  • 網(wǎng)絡組一等獎
  • 網(wǎng)絡組二等獎
  • 軟件組四等獎
  • 200家校區(qū)脫穎而出!
了解更多>
北大青鳥榮獲315重承諾守信用放心品牌

北大青鳥職業(yè)IT20周年

  • 重承諾
  • 守信用
  • 放心品牌
  • 放心學習
  • 靠靠譜譜好就業(yè)!
了解更多>
學IT好工作高薪就業(yè)

我命由我不由天

  • 學個性的技術
  • 做愛做的事
  • 掙滿意的錢
  • 衣食無憂
  • 選擇寬且高大尚!
了解更多>
鄭州北大青鳥IT培訓辦學14年

我們靠不靠譜

  • 14年辦學
  • 14年磨練
  • 14年成長
  • 14年探索
  • 只為讓每個學員成材!
了解更多>
鄭州北大青鳥IT培訓

不打工也牛掰

  • 好工作
  • 好環(huán)境
  • 高薪資
  • 好課程
  • 支持你成為有“錢”人!
了解更多>

學IT就讀北大青鳥

  • 好工作
  • 好未來
  • 好老師
  • 好課程
  • 支持你成為受人尊敬的人!
了解更多>
get和post對比區(qū)別說緩沖區(qū)溢出
作者:北大青鳥 添加時間:03-06 瀏覽次數(shù):0

 網(wǎng)頁表單(form)提交時可選擇2種提交方式:get和post。我們大都知道提交表單數(shù)據(jù)時應該使用post,也知道get方式不安全。是什么造成了get和post的區(qū)別,本文將從http協(xié)議層面分析,來說說get和post境遇不同的根本原因。

 
先來看看一個簡單的hello woeld頁面的http消息:
瀏覽器請求”http://127.0.0.1/test/hello.html”發(fā)送的http協(xié)議報文:
GET /test/hello.html HTTP/1.1
Host: 127.0.0.1:80
User-Agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
捕獲http報文需要使用工具程序(這里我使用自己編寫的TCP代理程序來截獲http消息)。請求協(xié)議報文第1行“GET”表明了提交方式,“/test/hello.html”表示請求的文家及路徑,“HTTP/1.1”表示使用的http協(xié)議版本。第2行表示請求的服務器IP和端口,注意“80”是默認添加上的端口號。后面幾行描述了客戶端系統(tǒng)、瀏覽器的一些信息。
WEB服務器應答報文:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=GBK
Content-Length: 145
Date: Wed, 26 Dec 2007 18:00:59 GMT
 
<!– HTML網(wǎng)頁文件實例  –>
<html>
    <head>
        <title>你好,世界!</title>
    </head>
    <body>
        <h3>世界你好!</h3>
    </body>
</html>
“200 OK”表示服務應答編碼,表示成功,常見的還有“404”、“500”等。“Content-Length: 145”表示應答網(wǎng)頁的長度,“Date: Wed, 26 Dec 2007 18:00:59 GMT”是應答時間,在這之后空一行,然后是網(wǎng)頁正文。

對于http通訊,總是像上面這樣客戶端(瀏覽器)發(fā)出請求,服務端(web服務器)給予應答,表單提交也同樣如此,下面分析一個簡單的表單。
get和post對比區(qū)別說緩沖區(qū)溢出
表單提交
1. get方式提交:
<form name="form1" method="get" action="result.jsp">
姓名:<input type="text" name="userName" value=""><br>
密碼:<input type="password" name="password" value=""><br>
性別:<input type="radio" name="sex" value="m">男 <input type="radio" name="sex" value="f">女<br>
愛好:<input type="checkbox" name="interest" value="dance">跳舞
         <input type="checkbox" name="interest" value="sing">唱歌
         <input type="checkbox" name="interest" value="basketball">籃球<br>
<br>    <input type="submit" name="submit" value="提交">
</form>
注意在<form>標簽中,method=”get”。
http請求協(xié)議報文:
GET /get_post/result.jsp? userName=lisi&password=1111&sex=f&interest=dance&interest=sing&submit=%CC%E1%BD%BB HTTP/1.1
Host: 127.0.0.1:8090
User-Agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
get方式表單的提交數(shù)據(jù)顯示在請求http協(xié)議的第一行,和請求地址用“?”間隔(這一行同樣會顯示在瀏覽器地址欄中)。從“ userName=lisi&password=1111&sex=f&interest=dance&interest=sing&submit=%CC%E1%BD%BB”可以分析出表單提交的數(shù)據(jù):

■ userName=lisi 姓名文本框輸入的是“lisi”
■ password=1111 密碼文本框輸入的是“111”
■ sex=f 性別單選鈕選擇的是“女”
■ interest=dance&interest=sing 愛好多選框選擇了2個:跳舞、唱歌
■ submit=%CC%E1%BD%BB 點擊“提交”按鈕進行提交(submit按鈕也是表單元素,同樣會提交給服務端),“%CC%E1%BD%BB”是按鈕的value屬性”提交”兩個漢字的gb2312的16位編碼。
下面看看post方式和get有什么不同。
2. post方式提交:
將<form>中的method=”get”改為method=”post”,提交同樣的數(shù)據(jù),http請求協(xié)議報文如下:
POST /get_post/result.jsp HTTP/1.1
Host: 127.0.0.1:8090
User-Agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 82
 
userName=lisi&password=1111&sex=f&interest=dance&interest=sing&submit=%CC%E1%BD%BB
區(qū)別
對比一下get和post方式的請求http協(xié)議報文,注意以下幾點:
■ 協(xié)議第一行起始,get方式聲明為“GET”,post方式聲明為“POST”。
■ 提交數(shù)據(jù)“userName=lisi&password=1111&sex=f&interest=dance&interest=sing&submit=%CC%E1%BD%BB”,對于get方式在第一行,對于post方式在最后一行,兩種方式對表單數(shù)據(jù)的編碼完全一致。
■ post方式多了3行: Content-Type: application/x-www-form-urlencoded,Content-Length: 82,和數(shù)據(jù)前的空行。
僅從以上幾點,很難想象出get和post究竟有什么實質(zhì)性的區(qū)別,為什么在使用中差別如此之大,真是以訛傳訛嗎?就像“菠菜含鐵量高”被誤傳了十來年,直到有人證明當年計算鐵含量時標錯了小數(shù)點。
實質(zhì)差別只有一點:“Content-Length: 82”,在post中表示了提交數(shù)據(jù)“userName=lisi&password=1111&sex=f&interest=dance&interest=sing&submit=%CC%E1%BD%BB”的長度,而get中沒有。

正是此導致服務端在接收get提交的數(shù)據(jù)時,極易出現(xiàn)一個安全漏洞:緩沖區(qū)溢出。
緩沖區(qū)溢出
■ 名詞解釋 【緩沖區(qū)溢出】: 通過往程序的緩沖區(qū)寫超出其長度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達到攻擊的目的。
服務端程序在接收客戶端表單提交的數(shù)據(jù)時,需要先將數(shù)據(jù)存儲到一個內(nèi)存空間,然后做解析等后續(xù)工作,這個內(nèi)存空間一般稱之為接收緩沖區(qū)。對于post數(shù)據(jù)因為有Content-Length標記,服務端可以按標記的長度創(chuàng)建一個等于或稍大于提交數(shù)據(jù)的緩沖區(qū);對于get,因為事先不知道提交的數(shù)據(jù)有多少,需要估計緩沖區(qū)長度,如果緩沖區(qū)很大而接收數(shù)據(jù)很小會造成內(nèi)存浪費,而如果緩沖區(qū)小于接收數(shù)據(jù),就可能造成緩沖區(qū)溢出。

緩沖區(qū)溢出
“聰明的”黑客,會在溢出部分放置特殊的代碼來攻陷你的服務器。
現(xiàn)代的WWW服務器并不是如此弱不禁風,但完全、有效的解決緩沖區(qū)溢出漏洞卻很難,操作系統(tǒng)、C語言程序都提供了滋生此問題的溫床,至今還有相當部分的WWW服務軟件有此漏洞,可以搜索一下“get 緩沖區(qū)溢出”看看。
get和post對比區(qū)別說緩沖區(qū)溢出
這也就是不建議使用get方式提交表單數(shù)據(jù)的原因所在。
深入思考去學習
隨便翻看http入門書籍,都有get和post的區(qū)別的描述,但往往只說其然,不說其所以然,而年輕的程序員往往記憶力很好,卻忽略了更重要的“思考”。
本篇文章的另一個目的是關于學習方法的: 要習慣于深入思考,要懷著疑問、探索、證明的態(tài)度去學習,哪怕是被廣泛認為是“公理”的觀點。
文章到此結束,純技術文章,由鄭州北大青鳥http:///整理,轉(zhuǎn)載請注明!

本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學習技巧、就業(yè)案例、招生詳情等問題,可以對在線咨詢老師進行一對一問答!


分享到: