<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 點擊劫持保護 # 點擊劫持中間件和裝飾器提供了簡捷易用的,對[點擊劫持](http://en.wikipedia.org/wiki/Clickjacking)的保護。這種攻擊在惡意站點誘導用戶點擊另一個站點的被覆蓋元素時出現,另一個站點已經加載到了隱藏的`frame`或`iframe`中。 ## 點擊劫持的示例 ## 假設一個在線商店擁有一個頁面,已登錄的用戶可以點擊“現在購買”來購買一個商品。用戶為了方便,可以選擇一直保持商店的登錄狀態。一個攻擊者的站點可能在他們自己的頁面上會創建一個“我喜歡Ponies”的按鈕,并且在一個透明的`iframe`中加載商店的頁面,把“現在購買”的按鈕隱藏起來覆蓋在“我喜歡Ponies”上。如果用戶訪問了攻擊者的站點,點擊“我喜歡Ponies”按鈕會觸發對“現在購買”按鈕的無意識的點擊,不知不覺中購買了商品。 ## 點擊劫持的防御 ## 現代瀏覽器遵循[X-Frame-Options](https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header)協議頭,它表明一個資源是否允許加載到`frame`或者`iframe`中。如果響應包含值為`SAMEORIGIN`的協議頭,瀏覽器會在`frame`中只加載同源請求的的資源。如果協議頭設置為`DENY`,瀏覽器會在加載`frame`時屏蔽所有資源,無論請求來自于哪個站點。 Django提供了一些簡單的方法來在你站點的響應中包含這個協議頭: + 一個簡單的中間件,在所有響應中設置協議頭。 + 一系列的視圖裝飾器,可以用于覆蓋中間件,或者只用于設置指定視圖的協議頭。 ## 如何使用 ## ### 為所有響應設置X-Frame-Options ### 要為你站點中所有的響應設置相同的`X-Frame-Options`值,將`'django.middleware.clickjacking.XFrameOptionsMiddleware'`設置為 `MIDDLEWARE_CLASSES`: ``` MIDDLEWARE_CLASSES = ( ... 'django.middleware.clickjacking.XFrameOptionsMiddleware', ... ) ``` 這個中間件可以在startproject生成的設置文件中開啟。 通常,這個中間件會為任何開放的`HttpResponse`設置`X-Frame-Options`協議頭為`SAMEORIGIN`。如果你想用 `DENY`來替代它,要設置`X_FRAME_OPTIONS`: ``` X_FRAME_OPTIONS = 'DENY' ``` 使用這個中間件時可能會有一些視圖,你并不想為它設置`X-Frame-Options`協議頭。對于這些情況,你可以使用一個視圖裝飾器來告訴中間件不要設置協議頭: ``` from django.http import HttpResponse from django.views.decorators.clickjacking import xframe_options_exempt @xframe_options_exempt def ok_to_load_in_a_frame(request): return HttpResponse("This page is safe to load in a frame on any site.") ``` ### 為每個視圖設置 X-Frame-Options ### Django提供了以下裝飾器來為每個基礎視圖設置`X-Frame-Options`協議頭。 ``` from django.http import HttpResponse from django.views.decorators.clickjacking import xframe_options_deny from django.views.decorators.clickjacking import xframe_options_sameorigin @xframe_options_deny def view_one(request): return HttpResponse("I won't display in any frame!") @xframe_options_sameorigin def view_two(request): return HttpResponse("Display in a frame if it's from the same origin as me.") ``` 注意你可以在中間件的連接中使用裝飾器。使用裝飾器來覆蓋中間件。 ## 限制 ## `X-Frame-Options`協議頭只在現代瀏覽器中保護點擊劫持。老式的瀏覽器會忽視這個協議頭,并且需要 [其它點擊劫持防范技巧](http://en.wikipedia.org/wiki/Clickjacking#Prevention)。 ### 支持 X-Frame-Options 的瀏覽器 ### + Internet Explorer 8+ + Firefox 3.6.9+ + Opera 10.5+ + Safari 4+ + Chrome 4.1+ ### 另見 ### 瀏覽器對`X-Frame-Options`支持情況的[完整列表](https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header#Browser_compatibility)。 > 譯者:[Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html),原文:[Clickjacking protection](https://docs.djangoproject.com/en/1.8/ref/clickjacking/)。 > > 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 協議發布,轉載請保留作者署名和文章出處。 > > [Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html)人手緊缺,有興趣的朋友可以加入我們,完全公益性質。交流群:467338606。
                  <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>

                              哎呀哎呀视频在线观看