Php 仅允许来自服务器的脚本访问文件

Php 仅允许来自服务器的脚本访问文件,php,security,.htaccess,Php,Security,.htaccess,仅允许脚本运行或从web服务器上的PHP文件获取请求 例如,您的web服务器上有一个文件http://example.com/libs/comment.php 仅允许其他PHP或JS文件从该文件获取请求(意味着运行该文件并执行所需结果) 如果任何用户尝试直接访问此文件,他/她将收到错误或404任何其他消息 这里的comment.php只是一个例子。libs文件夹包含很多文件,上面的内容适用于所有文件。我的首选是使用.htacces方法或模式重写文件夹,如666777等。 我知道这不是一个真正

仅允许脚本运行或从web服务器上的PHP文件获取请求

  • 例如,您的web服务器上有一个文件
    http://example.com/libs/comment.php
  • 仅允许其他PHP或JS文件从该文件获取请求(意味着运行该文件并执行所需结果)
  • 如果任何用户尝试直接访问此文件,他/她将收到错误或404任何其他消息
这里的
comment.php
只是一个例子。libs文件夹包含很多文件,上面的内容适用于所有文件。我的首选是使用.htacces方法或模式重写文件夹,如666777等。
我知道这不是一个真正的问题,仅仅为了提高安全性,几乎可以使网站安全。

如果浏览器可以通过
访问它,那么用户也可以


如果您只想让服务器访问它,请将其从
公共
目录中拉出,使其无法访问web。

如果浏览器可以通过
访问它,用户也可以


如果您只希望服务器访问它,请将其从
public
目录中拉出,使其无法访问web。

最简单的方法是在前端控制器中定义一个常量(可能是index.php):

然后,在任何包含文件的开头测试它:

!defined('SECURE') and exit;
这将阻止任何客户端访问(包括通过JavaScript或
src
attributes从页面调用资产;一切都是真的)


按照其他答案中的建议,最好为安全性制定其他规定。

最简单的方法是在前端控制器中定义一个常量(可能是index.php):

然后,在任何包含文件的开头测试它:

!defined('SECURE') and exit;
这将阻止任何客户端访问(包括通过JavaScript或
src
attributes从页面调用资产;一切都是真的)


根据其他答案中的建议,最好制定其他安全规定。

您可以在包含所述文件之前定义一个常量。比如:

<?php
    define('MY_CONSTANT', 1);
    include_once('libs/comment.php');
    ...

您可以在包含所述文件之前定义一个常量。比如:

<?php
    define('MY_CONSTANT', 1);
    include_once('libs/comment.php');
    ...

您在问题中已经提到了
.htaccess
。只需在
libs
目录中创建这样一个文件,然后输入以下指令:

Order allow, deny
Deny from all
有关和指令的详细信息,请参阅

请注意,错误将是
403禁止
,而不是
404未找到

请注意,这将拒绝通过HTTP访问
libs
dir中的文件。您的其他PHP文件可以
包含
需要
这些文件,因为这纯粹是服务器端操作。如果出于某种原因需要一个PHP脚本通过HTTP执行另一个,那么可以将顺序更改为
deny,allow
,还可以从127.0.0.1
添加一行
allow,以允许本地请求继续。但我怀疑您的PHP脚本是否会通过HTTP相互通信


如果您需要客户端上的JavaScript文档来不访问这些文件,那么这是不合理的:客户端broser可以做的任何事情,客户端都可以不执行您的代码,至少不以您插入代码的方式执行所有代码。有一个问题需要讨论一些防止轻易破坏的步骤,但这些都不能阻止坚定的黑客使用您的脚本。

您在问题中已经提到了
.htaccess
。只需在
libs
目录中创建这样一个文件,然后输入以下指令:

Order allow, deny
Deny from all
有关和指令的详细信息,请参阅

请注意,错误将是
403禁止
,而不是
404未找到

请注意,这将拒绝通过HTTP访问
libs
dir中的文件。您的其他PHP文件可以
包含
需要
这些文件,因为这纯粹是服务器端操作。如果出于某种原因需要一个PHP脚本通过HTTP执行另一个,那么可以将顺序更改为
deny,allow
,还可以从127.0.0.1
添加一行
allow,以允许本地请求继续。但我怀疑您的PHP脚本是否会通过HTTP相互通信


如果您需要客户端上的JavaScript文档来不访问这些文件,那么这是不合理的:客户端broser可以做的任何事情,客户端都可以不执行您的代码,至少不以您插入代码的方式执行所有代码。有一个问题需要讨论一些防止轻易破坏的步骤,但这些都不能阻止坚定的黑客使用您的脚本。

我也有同样的问题,从php调用中获得响应,如
http://example.com/libs/myphp.php?arg=value
从我读到的内容来看,几乎无法隐藏。所以我决定实施一种不同的方法。在php文件中创建一个函数,将该文件包含在脚本中,调用该函数并将结果分配给javascript中的一个变量。这样,所有的事情都对客户隐藏了

您将在
myphp.php

`<?php  
myFunction($param){
  // do your task
  return $result;
}
?>`
<?php
require_once( "myphp.php");
$param = //whatever params
$my_var = myFunction($param);    
?>
<html>
<head>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
<script type="text/javascript">
var myVar = <?php echo $my_var; ?>;  
// or
var myArray = <?php echo json_encode($my_var); ?>;
document.getElementById("myDiv").innerHTML = myVar; 
</script>

我也有同样的问题,从php调用中得到响应,比如
http://example.com/libs/myphp.php?arg=value
从我读到的内容来看,几乎无法隐藏。所以我决定实施一种不同的方法。在php文件中创建一个函数,将该文件包含在脚本中,调用该函数并将结果分配给javascript中的一个变量。这样,所有的事情都对客户隐藏了

您将在
myphp.php

`<?php  
myFunction($param){
  // do your task
  return $result;
}
?>`
<?php
require_once( "myphp.php");
$param = //whatever params
$my_var = myFunction($param);    
?>
<html>
<head>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
<script type="text/javascript">
var myVar = <?php echo $my_var; ?>;  
// or
var myArray = <?php echo json_encode($my_var); ?>;
document.getElementById("myDiv").innerHTML = myVar; 
</script>

如果您正在查找只能由服务器执行的锁定文件。 最简单的方法是更改整个文件夹或文件权限

例如,您希望使用文件夹图像中的某些图像 您可以将图像文件夹权限设置为700 这意味着只有服务器用户可以读写或执行文件。 其余的游客和警察