瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          公告

          公眾號:
          QQjava交流群:51374316



          相冊

          搜索

          •  

          積分與排名

          • 積分 - 2843376
          • 排名 - 2

          最新隨筆

          Apache的Order Allow,Deny 詳解(轉)

          Posted on 2011-10-31 14:23 瘋狂 閱讀(1072) 評論(0)  編輯  收藏 所屬分類: apache項目
          Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用來控制目錄和文件的訪問授權。

          所以,最常用的是:
          Order Deny,Allow
          Allow from All

          注意“Deny,Allow”中間只有一個逗號,也只能有一個逗號,有空格都會出錯;單詞的大小寫不限。上面設定的含義是先設定“先檢查禁止設定,沒有禁止的全部允許”,而第二句沒有Deny,也就是沒有禁止訪問的設定,直接就是允許所有訪問了。這個主要是用來確保或者覆蓋上級目錄的設置,開放所有內容的訪問權。

          按照上面的解釋,下面的設定是無條件禁止訪問:
          Order Allow,Deny
          Deny from All

          如果要禁止部分內容的訪問,其他的全部開放:
          Order Deny,Allow
          Deny from ip1 ip2
          或者
          Order Allow,Deny
          Allow from all
          Deny from ip1 ip2

          apache會按照order決定最后使用哪一條規則,比如上面的第二種方式,雖然第二句allow允許了訪問,但由于在order中allow不是最后規則,因此還需要看有沒有deny規則,于是到了第三句,符合ip1和ip2的訪問就被禁止了。注意,order決定的“最后”規則非常重要,下面是兩個錯誤的例子和改正方式:

          Order Deny,Allow
          Allow from all
          Deny from domain.org
          錯誤:想禁止來自domain.org的訪問,但是deny不是最后規則,apache在處理到第二句allow的時候就已經匹配成功,根本就不會去看第三句。
          解決方法:Order Allow,Deny,后面兩句不動,即可。

          Order Allow,Deny
          Allow from ip1
          Deny from all
          錯誤:想只允許來自ip1的訪問,但是,雖然第二句中設定了allow規則,由于order中deny在后,所以會以第三句deny為準,而第三句的范圍中又明顯包含了ip1(all include ip1),所以所有的訪問都被禁止了。
          解決方法一:直接去掉第三句。
          解決方法二:
          Order Deny,Allow
          Deny from all
          Allow from ip1

           

          下面是測試過的例子:
          --------------------------------
          Order deny,allow
          allow from all
          deny from 219.204.253.8
          #全部都可以通行
          -------------------------------
          Order deny,allow
          deny from 219.204.253.8
          allow from all
          #全部都可以通行
          -------------------------------
          Order allow,deny
          deny from 219.204.253.8
          allow from all
          #只有219.204.253.8不能通行
          -------------------------------
          Order allow,deny
          allow from all
          deny from 219.204.253.8
          #只有219.204.253.8不能通行
          -------------------------------
          -------------------------------
          Order allow,deny
          deny from all
          allow from 219.204.253.8
          #全部都不能通行
          -------------------------------
          Order allow,deny
          allow from 219.204.253.8
          deny from all
          #全部都不能通行
          -------------------------------
          Order deny,allow
          allow from 219.204.253.8
          deny from all
          #只允許219.204.253.8通行
          -------------------------------
          Order deny,allow
          deny from all
          allow from 219.204.253.8
          #只允許219.204.253.8通行
          -------------------------------
          --------------------------------
          Order deny,allow
          #全部都可以通行(默認的)
          -------------------------------
          Order allow,deny
          #全部都不能通行(默認的)
          -------------------------------
          Order allow,deny
          deny from all
          #全部都不能通行
          -------------------------------
          Order deny,allow
          deny from all
          #全部都不能通行
          -------------------------------
          對于上面兩種情況,如果換成allow from all,則全部都可以通行!
          -------------------------------
          Order deny,allow
          deny from 219.204.253.8
          #只有219.204.253.8不能通行
          -------------------------------
          Order allow,deny
          deny from 219.204.253.8
          #全部都不能通行
          -------------------------------
          Order allow,deny
          allow from 219.204.253.8
          #只允許219.204.253.8通行
          -------------------------------
          Order deny,allow
          allow from 219.204.253.8
          #全部都可以通行
          -------------------------------
          -------------------------------
          order deny,allow
          allow from 218.20.253.2
          deny from 218.20
          #代表拒絕218.20開頭的IP,但允許218.20.253.2通過;而其它非218.20開頭的IP也都允許通過。
          -------------------------------
          order allow,deny
          allow from 218.20.253.2
          deny from 218.20
          #和上面的差不多,只是掉換的order語句中的allow、deny先后順序,但最終結果表示全部都拒絕!

          form:http://hi.baidu.com/enjoypain/blog/item/f48c7aecdba298d12f2e21ac.html

          前段時間做了個Apache的HTTP代理服務器,其中的order allow,deny這部分弄的不太懂,于是上網找資料看,誰知道越看越糊涂,其中有些難以分辨對錯甚至是誤導。就像破解windows系統密碼的一些文章那樣,很多都是人云亦云的,并沒有經過測試。廢話少說,先把我經過測試后分析總結出來的結論show出來,相信這對大家的理解非常有幫助。
          轉自:http://hi.baidu.com/amenmen/blog/item/3145921fdf498f11314e154b.html

          主站蜘蛛池模板: 延安市| 西林县| 巧家县| 乌拉特中旗| 新乡市| 商河县| 临城县| 兴海县| 太湖县| 建宁县| 琼结县| 五华县| 师宗县| 横山县| 洱源县| 清水河县| 长泰县| 扶余县| 富阳市| 安乡县| 福贡县| 亳州市| 延安市| 青田县| 西乡县| 肥东县| 盐源县| 亳州市| 麟游县| 通河县| 宝鸡市| 收藏| 毕节市| 裕民县| 长汀县| 灵川县| 遂溪县| 仁寿县| 泾阳县| 黑水县| 安西县|