假设我们在同一个托管账户中有多个域名。树状结构如下:
home->website1
home->website2
home->website3
问题是 website3 或 website2 可以包含一个 php 或 js 文件,而该文件又包含来自 website1 的 php 或 js 文件。
第一个例子,website3 或 website2 可以包含一个 php 文件,如下:
<?php include "../website1/index.php"; ?>
第二个例子,website3 或 website 2 可以包含一个 js 文件,像这样:
<script src="../website1/index.php" />
我们如何才能限制从网站 3 和网站 2 访问网站 1 的执行访问,是否有任何代码可以让 root htaccess 禁止从其他文件夹访问网站 1?
答案1
我们如何才能限制来自 website3 的执行访问以及来自 website2 的所有语言对 website1 的访问?
目前还没有一种适用于所有语言的通用方法。
根据您问题中的要求:
第一个例子,website3 或 website2 可以包含一个 php 文件,如下:
<?php include "../website1/index.php"; ?>
你可能想看看open_basedirPHP 配置指令,它将允许您阻止 PHP 脚本打开给定目录之外的任何文件。
但请注意,尽管此设置效果很好,但如果您的网站出于合法目的需要访问外部文件,则可能会产生副作用。与任何安全执行系统一样,您必须了解自己在做什么,并在将更改应用于生产之前对其进行彻底测试。
第二个例子,website3 或 website 2 可以包含一个 js 文件,像这样:
<script src="../website1/index.php" />
这个似乎无效,主要有两个原因:
- JavaScript 在访问者的浏览器上执行,而不是在服务器上执行,并且浏览器很可能无法访问该
../website1/
目录。 - PHP 和 JavaScript 无关,您不能在 JavaScript 中执行 PHP 代码。
或许你考虑过这样的事情:
<script src="http://www.website1.com/myscript.js" />
这里,来自网站 3 或网站 2 的页面依赖于由网站 1 托管并公开共享的脚本,没有真正的方法可以阻止这种情况(检查referer
HTTP 标头可能会限制这种情况,但绝对不会阻止它)。
但这既不会泄露任何信息,也不会暴露任何安全漏洞,因为该信息myscript.js
已由网站 1 公开分享。