只允许脚本运行或从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文件可以是include
或require
这些文件,因为这是一个纯粹的服务器端操作。如果出于某种原因,您需要一个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错误。