<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                <table width="100%" border="0" cellspacing="0" cellpadding="5" bgcolor="#649CCC"><tr valign="middle"><td align="left"> <p class="p_Heading1"><span class="f_Heading1">第四章 會話與 Cookies</span></p> </td> <td align="right"> <span style="font-size: 9pt"> <a href="introduction.htm">Top</a>? <a href="new_item27.htm">Previous</a>? <a href="new_item29.htm">Next</a> </span> </td> </tr></table> <table width="100%" border="0" cellspacing="0" cellpadding="5"><tr valign="top"><td align="left"><p style="line-height: 1.50;"> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第四章 會話與 Cookies</p><p style="line-height: 1.50;"> ?本章主要討論會話和有狀態的Web應用的內在風險。你會首先學習狀態、cookies、與會話;然后我會討論關于cookie盜竊、會話數據暴露、會話固定、及會話劫持的問題及防范它們的方法。</p><p style="line-height: 1.50;"> ? 正如大家知道的,HTTP是一種無狀態的協議。這說明了兩個HTTP請求之間缺乏聯系。由于協議中未提供任何讓客戶端標識自己的方法,因此服務器也就無法區分客戶端。</p><p style="line-height: 1.50;"> ? 雖然HTTP無狀態的特性還是有一些好處,畢竟維護狀態是比較麻煩的,但是它向需要開發有狀態的Web應用的開發人員提出了前所未有的挑戰。由于無法標識客戶端,就不可能確認用戶是否已登錄,在購物車中加入商品,或者是需要注冊。</p><p style="line-height: 1.50;"> ? 一個最初由網景公司構思的超強解決方案誕生了,它就是被命名為cookies的一種狀態管理機制。Cookies是對HTTP協議的擴充。更確切地說,它們由兩個HTTP頭部組成:Set-Cookie響應頭部和Cookie請求頭部。</p><p style="line-height: 1.50;"> ? 當客戶端發出對一個特定URL的請求時,服務器會在響應時選擇包含一個Set-Cookie頭部。它要求客戶端在下面的請求中包含一個相就的Cookie頭部。圖4-1說明了這個基本的交互過程。</p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;">圖4-1. 兩個HTTP事務間Cookie的完整交互過程</p><p style="text-align: justify;"><img src="image/577391798c751.png" width="534" height="202" vspace="1" hspace="1" border="0" alt=""/></p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;"> ? 如果你根據這個基本概念在每一個請求中包含同一個唯一標識碼(在cookie頭部中),你就能唯一標識客戶端從而把它發出的所有請求聯系起來。這就是狀態所要求的,同時也是這一機制的主要應用。</p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;">小提示</p><p style="line-height: 1.50;">迄今為止,最好的cookies使用指南依然是網景公司提供的規范,網址是:http://wp.netscape.com/newsref/std/cookie_spec.html 。它是最類似和接近于全行業支持的標準。</p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;"> ? 基于會話管理的概念,可以通過管理每一個客戶端的各自數據來管理狀態。數據被存儲在會話存儲區中,通過每一次請求進行更新。由于會話記錄在存儲時有唯一的標識,因此它通常被稱為會話標識。</p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;"> ? 如果你使用PHP內建的會話機制,所有的這些復雜過程都會由PHP為你處理。當 ? 你調用函數session_start()時,PHP首先要確認在本次請求中是否包含會話標識。如果有的話,PHP就會讀取該會話數據并通過$_SESSION超級公用數組提供給你。如果不存在,PHP會生成一個會話標識并在會話存儲區建立一個新記錄。PHP還會處理會話標識的傳遞并在每一個請求時更新會話存儲區。圖4-2演示了這個過程。</p><p style="line-height: 1.50;">?</p><p style="line-height: 1.50;"> ? 雖然這很簡便有效,但最重要的還是要意識到這并不是一個完整的解決方案,因為在PHP的會話機制中沒有內建的安全處理。除此之外,由于會話標識是完全隨機產生的,因此是不可預測的。你必須自行建立安全機制以防止所有其它的會話攻擊手段。在本章中,我會提出一些問題,并提供相應的解決方案。</p><p style="line-height: 1.50;">?</p><hr noshade="noshade" size="1"/><p style="line-height: 1.50;">?</p></td></tr></table>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看