2014-03-25 57 views
0

我已經建立了一個基於php/joomla的網站。它在WAMP服務器上運行。保護上傳的文件

用戶可以上傳文件/圖片到自己的帳戶,並且這些文件都被保存爲:

public_html/userfiles/0001.jpg 
public_html/userfiles/0002.jpg 
public_html/userfiles/0003.jpg 
... 

對於隱私的緣故,我想避免沒有註冊的用戶或用戶沒有權限訪問來自其他用戶的文件。現在,任何人都可以通過在瀏覽器地址欄中輸入文件名來訪問所有圖像。

我需要一個非常高的保護水平,所以我的問題是:我可以通過apache設置解決這個問題嗎?或者我應該使用fx服務器站點的AES加密,然後在客戶端請求密碼並使用類似crypto-js的內容運行解密?

+0

您可以防止目錄使用'的.htaccess選項-Indexes' –

+0

上市@拉維你仍然可以查看圖像,如果你有圖像的網址,但沒有登錄。 –

+0

在o其他方面,你可以做的是限制從'.htaccess'訪問* .jpg,你可以編寫'.php'腳本來檢查用戶會話,並根據你可以讀取和輸出圖像從PHP。 'header(「Content-Type:image/jpg」);' –

回答

0

你可以這樣做,.JPG使用的.htaccess

的.htaccess

1.防止直接訪問

<FilesMatch "\.(jpg|jpeg)$"> #all file extensions you want to restrict. 
Deny from all 
</FilesMatch> 

2.使用.php回覆圖像腳本。

get_picture.php

//check here user login 
//if not logged-in 
// exit(); 

//proceed if logged-in. 

//get picture file path from DB. 
$file_path="this/path/will/be/from/db/user_xyz.jpg" 

header("content-type: image/jpg"); //set mime type respective to file type 

readfile(file_path); 

die(); 

3.如何在 HTML使用

<img src="get_picture.php" style="height:100px;width:100px;" /> 
0

不是真的用的.htaccess不錯,但你可以使用下面的代碼:

RewriteCond %{HTTP_COOKIE} allow!=true 
RewriteRule (.*) http://domain.com/404.html [L,QSA] 

這將完成是會重定向任何人用一個cookie allow沒有設置爲domain.com/404。 html 您應該在設置時將http cookie設置爲true。

0

這將防止圖像通過url訪問,但仍然會顯示從HTML/PHP文件。 (localhost更改無論你的主機)

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg)$ - [F]