保护服务器上的xml文件

问题描述:

我在这里阅读了很多关于保护apache服务器上的文件的答案,有人告诉htaccess只是为了拒绝用户访问文件。对我来说不是..保护服务器上的xml文件

使用下面的代码我无法到达xml,但是我的php脚本也不行!

<Files sample.xml> 
    Order allow,deny 
    Deny from all 
</Files> 

因此,如何保护用户的文件,使我的PHP脚本可以访问它。该文件位于根目录中。

+0

如何你的PHP程序试图访问该文件? – 2012-03-05 17:37:41

+0

我是不正确的:我的JavaScript代码从URL读取XML。 – subdesign 2012-03-06 09:55:42

+1

@subdesign:如果您的JavaScript可以读取您的XML文件,那么其他人也可以读取您的XML文件,并且没有办法阻止它! – linuxeasy 2012-03-06 10:04:33

如果你是一个Linux服务器上,有给它的shell访问,您更改文件权限

chmod 0700 yourxmlfile.xml # this will make it readable/writable/executable only by the creator of the file. 

或在您的.htaccess文件,你可以这样做:

RewriteEngine on 
RewriteRule ^yourfile.xml$ 404.html 

其中您的404.html可能是页面未找到页面或任何垃圾页面,它将显示为无效的url。

+0

im在Linux上,并有shell访问.. chmod 0700使相同,403禁止。设置回0664文件是可读的 尝试你的第二个建议.. – subdesign 2012-03-06 09:36:44

+0

@subdesign:如果你希望你的XML文件可以被JavaScript读取,你不能阻止任何人阅读它。所有这些建议都是为了防止读取您的xml文件。 – linuxeasy 2012-03-06 10:00:13

+0

谢谢你linuxeasy,你完全正确 – subdesign 2012-03-06 10:13:31

如果用户你的意思是外面的人访问你的网站,你有几种解决方案:

的最佳方式是(如果你能)将其移动到web目录中。这肯定会保护它免受外部访问。

如果你不能把文件中的网站根目录外,使用.htaccess中允许只从本地机器访问受保护的文件:

Order Deny,Allow 
Deny From All 
Allow From 127.0.0.1 

我也建议把它在一个受保护的子文件夹,你可以存储你所有的私人文件。

+0

谢谢。我把我的xml放到一个文件夹中,使用了你的htaccess命令,但是我的javascript无法读取xml。 Firebug错误:403禁止 - 您无权访问此服务器上的/xml/obs.xml 。 – subdesign 2012-03-06 09:27:14

+0

那么你先说PHP吧。您的JavaScript在客户端执行,因此它具有与任何外部用户相同的访问权限。如果你想用JavaScript读取XML,它必须是公开的。 – 2012-03-06 18:13:49

你也可以通过添加代码,将用户重定向到一个404页,下面你的.htaccess:

RewriteEngine On  
RewriteRule ^(.*)your_file(.*)\.xml$ [R=404,L] 
+0

使用此命令,我无法从url(404错误)获取xml文件,但是我的js脚本也无法读取。 – subdesign 2012-03-06 10:04:35