1

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

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

这里comment.php只是一个例子。libs 文件夹包含大量文件,以上适用于所有文件。我的偏好是使用 .htacces 方法或像 666,777 等文件夹的模式重写。我知道这不是一个真正的问题,只是为了提高安全性,使网站几乎安全。

4

6 回答 6

4

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

define('SECURE', true);

然后,在任何包含文件的开头对其进行测试:

!defined('SECURE') and exit;

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

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

于 2012-07-13T09:13:40.647 回答
3

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

Order allow, deny
Deny from all

有关OrderDeny指令的详细信息,请参阅手册。

请注意,错误将403 Forbidden代替404 Not Found.

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

如果您需要客户端的 JavaScript 文档不访问这些文件,那么这是无法合理地完成的:客户端 broser 可以做的任何事情,客户端可以在不执行您的代码的情况下执行任何操作,至少无需按照您指定的方式执行所有代码至。有一个关于如何限制对 PHP 文件的访问的问题,其中讨论了一些防止轻易破坏的步骤,但这些都不会阻止坚定的黑客使用您的脚本。

于 2012-07-13T22:33:42.047 回答
2

If the browser can access it via <script> or <style>, so can the user.

If you only want the server to access it, pull it out of the public directory, to make it web-inaccessible.

于 2012-07-13T09:12:59.150 回答
0

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

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

然后在comment.php中你可以放这样的东西:

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

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

于 2012-07-13T09:33:38.287 回答
0

我有同样的问题,从 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>
于 2017-06-09T14:10:20.913 回答
0

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

例如,您想使用文件夹图像中的一些图像,您可以将图像文件夹权限设置为 700,这意味着只有服务器用户可以读写或执行文件。其他访问者和公共用户在尝试访问时会收到 404 错误。

于 2021-03-09T10:11:22.037 回答