PDA

View Full Version : Vấn đề authentication khi download resource??



bonmat179
18-12-2008, 21:50
Chào cả nhà !
Mình đang làm web nhưng đang gặp phải vấn đề rất đau đầu như sau. Khi một user A login thành công vào website của mình và vào mục download dữ liệu. A down thì không sao, tuy nhiên A lại đi public đường link này lên mạng: ví dụ URL là www.abc.com/folderA/fileA.rar . Khi đó sẽ có rất nhiều người down được fileA.rar này. Tuy nhiên điều này là cấm kị vì chỉ có những ai login vào website mới có quyền down.
Ví dụ tiêu biểu cho trường hợp này: Chắc ai lập trình đều đã vào site
www.codeproject.com. Ví dụ khi đọc bài viết:

http://www.codeproject.com/KB/cs/SharedSettings.aspx
thì link down source của bài là:

http://www.codeproject.com/KB/cs/SharedSettings/SharedSettingsDemo.zip
Tuy nhiên nếu ko login vào website thì sẽ ko tài nào down được link này mà khi paste link kia vào website sẽ ra ngay site:

http://www.codeproject.com/script/Membership/LogOn.aspx&download=true
và thông báo : Page Not Found
Ví dụ khủng hơn nữa là của rapidshare. Mặc dù sau khi mình upload file lên và login bằng acc pre vào lấy được direct link, tuy nhiên có public link này thì ko ai có thể down được, và mỗi một lần là link lại khác nhau mặc dù nó đều chỉ đến cùng 1 file cả.
Có ai xử lý trường hợp này hoặc nghe nói có cách nào để làm giống như vậy không ? Rất mong mọi người giúp đỡ và cùng thảo luận với mình !!

superthin
18-12-2008, 23:44
Có nhiều cách đạt tới yêu cầu của bạn, bạn có thể tìm hiểu với từ khóa là stream file to download hoặc bạn xem code của các forum viết đó, có public link thì khi vào download cũng đâuc có download được, vì đàng nào cũng phải bước qua xác một file .php, file này kiểm tra đăng nhập và từ chối ngay.

jiSh@n
19-12-2008, 07:08
Dựa vào đâu mà dám chắc đó là direct link?

thiendv
19-12-2008, 09:05
Bạn có thể đọc file sau đó sử dụng header để khai báo kiểu trả về cho phía client. Mình nghĩ bạn nên search google với từ khóa "xây dựng một chương trình download files đơn giản". Ở diendantinhoc.org đã có một bài tutorial về vấn đề này.

newcomer11
19-12-2008, 09:19
úi, mới trả lời bên uds xong qua đây lại gặp, hơ hơ.

bka
19-12-2008, 11:45
cái file này mà có thực tui chết liền


http://www.codeproject.com/KB/cs/SharedSettings/SharedSettingsDemo.zip


toàn đoán mò. cách thì thiếu gì .

bonmat179
22-12-2008, 15:58
Có nhiều cách đạt tới yêu cầu của bạn, bạn có thể tìm hiểu với từ khóa là stream file to download hoặc bạn xem code của các forum viết đó, có public link thì khi vào download cũng đâuc có download được, vì đàng nào cũng phải bước qua xác một file .php, file này kiểm tra đăng nhập và từ chối ngay.
cái tream file ấy tớ tưởng chỉ dùng khi download file audio hoặc video thôi chứ ??

Dựa vào đâu mà dám chắc đó là direct link?
Cái tớ làm là sau khi log in xong sẽ cho download direct link ở 1 server khác


úi, mới trả lời bên uds xong qua đây lại gặp, hơ hơ.
Welcome :D Vấn đề nan giải nên phải đi hỏi cao thủ ở các nơi mà.


cái file này mà có thực tui chết liền


http://www.codeproject.com/KB/cs/SharedSettings/SharedSettingsDemo.zip


toàn đoán mò. cách thì thiếu gì .
Sao lại ko có file này. Cậu phải log in thì sẽ down được ngay !! Sure 100%

s.code
22-12-2008, 16:37
http://sgallery.giaidap.info/download/s.gallery.v.1.3.1.zip

Kiểu như vậy đúng ko.

snoob
22-12-2008, 16:45
Bác dùng htaccess vô cái thư mục download thử xem. Ví dụ : http://www.codeproject.com/KB/cs/SharedSettings/SharedSettingsDemo.zip => http://www.codeproject.com/KB/cs/SharedSettings/download.php?id=SharedSettingsDemo.zip rùi trong file php đó bác cứ tính toán tính toán gì đấy. Em chưa làm nhưng bác cứ thử xem.

jiSh@n
22-12-2008, 18:24
Cái tớ làm là sau khi log in xong sẽ cho download direct link ở 1 server khác
Thế khi logout thì cái "direct link" ấy có xài được ko?

bka
23-12-2008, 08:57
xài tốt chứ. trừ khi nó bị rename

bonmat179
23-12-2008, 11:06
http://sgallery.giaidap.info/download/s.gallery.v.1.3.1.zip

Kiểu như vậy đúng ko.
Đúng là như vậy đấy? Cậu có biết cách thức họ làm không?


Bác dùng htaccess vô cái thư mục download thử xem. Ví dụ : http://www.codeproject.com/KB/cs/SharedSettings/SharedSettingsDemo.zip => http://www.codeproject.com/KB/cs/SharedSettings/download.php?id=SharedSettingsDemo.zip rùi trong file php đó bác cứ tính toán tính toán gì đấy. Em chưa làm nhưng bác cứ thử xem.
Hix ! Tớ làm bằng asp.net :(

Thế khi logout thì cái "direct link" ấy có xài được ko?
Vì là direct link đến một server khác nên ai có link đó cũng download được!

s.code
23-12-2008, 14:53
Khổ lắm. Đó là rewirte URL.

http://sgallery.giaidap.info/download/s.gallery.v.1.3.1.zip

Là mình viết bằng PHP. Còn bên .NET thì ko rõ. Nhưng kịch bản như sau. Đúng như bác superthin nói. Kiểu gì nó cũng phải qua 1 file php hoặc aspx chặn để sử lý.

Thực tế cái file này không nằm trong thư mục như bạn nhìn. Nó có thể nằm ở trong 1 thư mục upload nào đó mà ta ko cho người dùng biết dc hoặc biết mà ko down trực tiếp dc.

Ví dụ nhé: Link sau

http://domain.com/download.aspx/abc.zip

Bạn phải tìm cách rewrite nó thành.

http://domain.com/download/abc.zip

Nhưng thực tế nó vẫn chạy cái link thật kia.

Trong file download này bạn get cái tham số (tên file về). Check hoặc kiểm tra cơ sở dữ liệu ( tất nhiên trong file này cũng check login nữa ) Nếu thỏa mãn. Bạn đọc cái file đó trên server xuất ra.

response.write(data);

gì gì đó. Lâu không làm .net quên mất òi.

Như chỉnh cái header nữa cho giống như down link thật.