用session保護檔案做法?



贊助商連結


Hendry
2003-07-05, 01:54 PM
假設我的登入網頁(index.htm)
讓使用者登入後連結到下載檔案的網頁(down.php)(此網頁有用session保護
裡面有許多讓使用者下載檔案的連結

<a href="1.rar">NET </a>
使用者點了之後就可以下載
但我試了若沒有登入,直接打檔案的網址
一樣可以下載!!!請問要怎麼解決?

以下是我登入後連結到的網頁
煩請各位教教我
thx
PHP VER4.2.3

<?
session_save_path("session");
session_start();
if (isset($na2))
{
}
else
{
echo "本網頁需輸入帳號和密碼";
exit();
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>無標題文件</title>
</head>

<body>
<a href="1.rar">NET</a>
</body>
</html>

贊助商連結


dennis2002
2003-07-05, 02:42 PM
無解..
一個是透過網頁
一個是直接連結檔案
2條路不一樣

lamina
2003-07-05, 05:07 PM
同上說的...無解...
如果對方直接盜連檔案位址的話, Session 將無法保護你的檔案
通常 Session 只是拿來作一些判斷維護的門檻而已
例如:會員,線上購物...

CPY
2003-07-05, 06:07 PM
寫一個 download.php 程式頁面...
將檔案名稱寫入 資料庫 中...

down.php 中下載檔案的連結改成
<a href="http://url/download.php?id=xx&$SID">下載</a>

//-----------
download.php 大致上寫成這樣:
if($_SESSION['name']){

此處要寫聯結資料庫並且讀取檔案名稱

header("Content-type: application/download");
header("Content-Disposition: attachment; filename=$data_name"); //$data_name 儲存時檔案名稱
header("Content-Transfer-Encoding: binary");
@readfile($path); //檔案名稱含路徑 ex:./data/a.rar
}else{
echo "ERROR!! Please Login...";
}
//----------

這種方法只能隔絕檔案名稱和路徑不讓人知道,但是沒辦法完全阻擋知道檔案名稱和路經的下載方法!!

PS.為何不用 Cookies !? 比 Session 方便多了...

Hendry
2003-07-05, 10:13 PM
我在網路上問人
有人說只要加上下面那一行就可!!??
但我不知道他這一行的意思?以及要加到哪裡...

if($request_method=="GET")die();

飛翔
2003-08-06, 11:10 PM
上述的基本上都是透過網頁來控制
但如果不透過網頁那就沒用了
而且如果真的有心的話那用urlsnooper一樣可以取得網址
只要他能夠下載那她的電腦就一定會拿到下載的網址
不然怎麼抓,對不對,以前我也為了這個問題困擾了很久
既然網頁沒辦法那我就從主機下手
下面這個其實只是開啟主機的功能而已所以語法非常的短
一般學校給的空間都會開自己架的那就更不用說了
如果能用.htaccess的話

例如以下連結,就算有網址但沒有帳號密碼還是無法下載
帳號 guest
密碼 eVonne
http://snow.prohosting.com/6hg5j4k/eVonne/eVonne22.jpg
但要使用的主機有開這個功能

密碼是用ASCII碼
http://www.uhome.net/component/view.php?ID=16


對這個我不是很了解如有錯誤之處請發言更正,謝謝~~