保护上传的文件

时间:2014-03-25 11:34:27

标签: php apache security

我已经建立了一个基于php / joomla的网站。它在WAMP服务器上运行。

用户可以将文件/图像上传到自己的帐户,文件全部保存为:

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

为了保护隐私,我希望避免未经注册的用户或未经许可访问其他用户的用户。现在,任何人都可以通过在浏览器地址栏中输入文件名来访问所有图像。

我需要极高级别的保护,所以我的问题是:我可以通过apache设置解决这个问题吗?或者我应该使用fx服务器站点AES加密,然后在客户端站点请求密码并使用crypto-js之类的东西运行解密?

3 个答案:

答案 0 :(得分:0)

使用.htaccess并不是很好,但您可以使用以下代码:

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

这样做会重定向任何人将 allow 设置为 domain.com/404.html 您还应该在设置时将http cookie设置为true。

答案 1 :(得分: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]

答案 2 :(得分:0)

你可以这样做,

<强> 1。使用.htaccess

阻止直接访问.jpg

<强>的.htaccess

<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;" />