台灣最大程式設計社群網站
線上人數
999
 
會員總數:244123
討論主題:188483
歡迎您免費加入會員
討論區列表 >> PHP >> 阻擋子目錄進入網站的方法?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
阻擋子目錄進入網站的方法?
價值 : 10 QP  點閱數:279 回應數:9

樓主

Max
門外漢
0 37
623 26
發送站內信

我在windows上,用xampp架一個apache

網站主要由/Home/index.php當做外框

然後用$("#contentPage").load("/views/XXXX.php");
切換頁面

可是如果使用者在瀏覽器上輸入
http://www.XXXX.com.tw/views/XXXX.php
這樣會進入該頁面

我有試過在httpd.conf裡,拿掉Indexes
這樣輸入http://www.XXXX.com.tw/views
確實會擋掉沒錯

但是如果一樣輸入
http://www.XXXX.com.tw/views/XXXX.php
依舊可以進入該網頁

請問有什麼方法可以阻擋由子目錄進入網頁?

搜尋相關Tags的文章: [ xampp ] , [ block ] , [ php ] , [ root ] ,
本篇文章發表於2018-12-11 11:58
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

淺水員
檢舉此回應
1. 在與 index.php 相同目錄下建立一個檔案叫做 「.htaccess」。
2. 編輯「.htaccess」,內容如下:


以上方法需要開啟允許 .htaccess 運作
開啟的方法可以搜尋一下,滿簡單的
本篇文章回覆於2018-12-11 13:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Max
檢舉此回應
回淺水員大大

剛試了一下
這樣會造成/Home/index.php
在讀取內頁的時候也會被阻擋
$("#contentPage").load("/views/XXXX.php");

我的網站檔案結構如下

Home資料夾
|-> index.php
views資料夾
|-> XXX.php
|-> ZZZ.php
.htaccess


.htaccess我有試過放在Home資料夾裡,可是好像沒用
本篇文章回覆於2018-12-11 14:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
如果是要這樣的用法。那就不太可能做到。

因為js也是屬於瀏覽器呼叫的。
不可能同時設定「可進」「不可進」這樣的矛盾處理。

一般來說。會用php另外去讀取view內的檔案。
如get_view.php?t=XXX.php

然後你在去限制views的目錄不能直接讀取就好了。
將views的頁面讀取交由另一個php來幫你處理。

這樣就可以限制views目錄的直接讀取。
本篇文章回覆於2018-12-11 16:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
上面的說明並不太明確。我再解釋一下

$("#contentPage").load("/views/XXXX.php");
這個動作,其實也是進入子目錄的動作。

對server來說,無論是用網址列輸入的。或是js程式控制轉頁的。通通都是屬於「進入子目錄」

所以#1教你的方式,的確是限制不能進去子目錄。但這一定也是相對的連js控制「進入子目錄」也一起檔了。
畢竟兩者的動作都是相同的。
本篇文章回覆於2018-12-11 16:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
最有價值解答

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
試試看Request 【HTTP_REFERER】這個參數...

在Home/index.php在讀取/views/XXXX.php
XXXX.php 應該會抓到 index.php


直接在瀏覽器輸入/views/XXXX.php 的時候,
XXXX.php 應該會抓到 空白
本篇文章回覆於2018-12-11 16:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

淺水員
檢舉此回應
抱歉我沒看到你是要用 jQuery 去取得頁面
不過有這種需求的話
應該不是直接去連 veiw/xxx.php
而是透過類似浩瀚星空在 3F 的方式

通常 get_view.php 裡面有使用者驗證的程式碼
如果是合法使用者才會丟回頁面
否則拒絕
本篇文章回覆於2018-12-11 22:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

淺水員
檢舉此回應
稍微補充一下
HTTP_REFERER 是可以偽造的
所以 view 裡面建議不要有機密資料
機密資料還是得透過伺服器端的驗證比較安全

例如:
1. 先到 index.php
2. 在開發者工具那邊輸入 location.href=http://網址/view/檔案

這樣一樣能夠讓伺服器以為是從 index.php 送過來的
本篇文章回覆於2018-12-12 11:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

淺水員
檢舉此回應
忘記加引號,上面修正為:

本篇文章回覆於2018-12-12 11:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
其實使用 HTTP_REFERER 的方式雖然也是一種方法。但要實現這樣的應用。
還是需要用一支php來實現這樣的功能。
本篇文章回覆於2018-12-12 13:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.