限制执行访问

限制执行访问

假设我们在同一个托管账户中有多个域名。树状结构如下:
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 托管并公开共享的脚本,没有真正的方法可以阻止这种情况(检查refererHTTP 标头可能会限制这种情况,但绝对不会阻止它)。

但这既不会泄露任何信息,也不会暴露任何安全漏洞,因为该信息myscript.js已由网站 1 公开分享。

相关内容