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


Only allow script from server to access files

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

  • 例如,你的网络服务器http://example.com/libs/comment.php上有一个文件
  • 只允许其他PHP或JS文件从该文件获得请求(意味着运行该文件并执行所需的结果)
  • 如果任何用户尝试直接访问此文件,他/她将收到错误或404任何其他消息

这里这个comment.php只是一个例子。libs文件夹包含许多文件,以上内容适用于所有文件。我更喜欢使用.htaces方法或模式重写文件夹,如666777等。我知道这不是一个真正的问题,只是为了提高安全性,使几乎sercure网站。

好吧,最简单的方法是在前端控制器中定义一个常量(大概是index.php):

define('SECURE', true);

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

!defined('SECURE') and exit;

这将阻止任何客户端访问(包括通过JavaScript或src属性从页面调用资产;一切都是

正如其他答复中所建议的那样,最好为安全作出其他规定。

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

Order allow, deny
Deny from all

有关"订单"answers"拒绝"指令的详细信息,请参阅手册。

请注意,错误将是403 Forbidden而不是404 Not Found

请注意,这将拒绝所有通过HTTP访问libs目录中的文件。您的其他PHP文件可以是includerequire这些文件,因为这是一个纯粹的服务器端操作。如果出于某种原因,您需要一个PHP脚本来通过HTTP执行另一个脚本,那么您可以将order更改为deny, allow,并添加一行Allow from 127.0.0.1,以允许本地请求继续进行。但我怀疑你是否会让你的PHP脚本通过HTTP相互交流。

如果你需要客户端的JavaScript文档来不访问这些文件,那么这是不合理的:客户端浏览器可以做的任何事情,客户端都可以在不执行你的代码的情况下做,至少不需要按照你的方式执行所有代码,但这些都不会阻止坚定的黑客使用你的脚本。

如果浏览器可以通过<script><style>访问,用户也可以。

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

您可以在包含上述文件之前定义一个常量。类似于:

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

然后在comment.php中,您可以放置这样的内容:

<?php
    if(!defined('MY_CONSTANT')) {
       header("Status: 404 Not Found");
    }
    ...

或多或少,你会产生与你描述的效果相同的效果。

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

您将拥有myphp.php

`<?php  
myFunction($param){
  // do your task
  return $result;
}
?>`

然后在您的页面中,index.php

<?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这意味着只有服务器用户才能读写或执行文件。其他访问者和公共用户在尝试访问时会收到404错误。