我在“域1”上有一个脚本,它在“域2”上的XML文件上执行simplexml_load_file,如下所示:
$url = 'domain2.com/file.xml';
$xml = simplexml_load_file($url);
$xmlEmail = $xml->xpath("//users/user/email");
$userEmail = implode(", ", (array) $xmlEmail);
但是,此XML文件包含有关用户的私人信息。我不希望它可以直接访问。根据用户的不同,域2也会有所不同,所以我不能按实际域或IP来过滤。
是否可以设置权限以使公众无法访问它,但仍然可以通过simplexml调用读取?可能还有其他方法吗?
答案 0 :(得分:1)
将以下内容添加到.htaccess
文件中,该文件与file.xml
位于同一文件夹中:
<Files file.xml>
Order Deny,Allow
Deny from all
Allow from domain2.com
</Files>
这将告诉您的网络服务器禁止访问此文件,除非请求来自domain2.com
。
更新:
根据所有者告诉的问题,将从不同的域访问此xml文件。在这种情况下,我可能想到的唯一合理的选择是密码。 galymzhan 已经提供了答案,但我会尝试扩展他的答案并提供有效的解决方案。
将以下内容添加到.htaccess
文件中,该文件与file.xml
位于同一文件夹中:
的.htaccess
<Files file.xml>
AuthType Basic
AuthName "Protected Access"
AuthUserFile /full/path/to/.htpasswd
Require valid-user
</Files>
请注意,不需要对服务器进行shell访问。您可以通过ftp上传.htpasswd
文件,并更改其权限,以便Web服务器组不会读取/写入。
有关密码保护的更多信息,以及一些示例,可以找到here。
答案 1 :(得分:1)
在“域2”上为您的Web服务器设置HTTP基本身份验证。像这样更改XML文件的URL:
$url = 'http://my_username:my_password@domain2.com/file.xml';
$xml = simplexml_load_file($url);