仅允许脚本运行或从Web服务器上的PHP文件获取请求。
http://example.com/libs/comment.php
这里comment.php
只是一个例子。 libs文件夹包含许多文件,以上内容适用于所有文件。我的偏好是使用.htacces方法或模式重写文件夹,如666,777等。
我知道这不是一个真正的问题,只是为了提高安全性,几乎可以建立起来的网站。
答案 0 :(得分:4)
嗯,最简单的方法是在前端控制器中定义一个常量(大概是index.php ):
define('SECURE', true);
然后,在任何包含文件的开头测试它:
!defined('SECURE') and exit;
这将阻止任何客户端访问(包括从页面调用资源,通过JavaScript或src
属性;一切都)
如其他答案所建议的那样,最好为安全做出其他规定。
答案 1 :(得分:3)
如果浏览器可以通过<script>
或<style>
访问它,那么用户也可以访问它。
如果您只希望服务器访问它,请将其从public
目录中取出,以使其无法访问网页。
答案 2 :(得分:2)
您已在问题中提及.htaccess
。只需在libs
目录中创建这样的文件,然后输入以下指令:
Order allow, deny
Deny from all
有关manual和Order指令的详细信息,请参阅Deny。
请注意,错误为403 Forbidden
,而不是404 Not Found
。
请注意,这将拒绝所有通过HTTP访问libs
目录中的文件。您的其他PHP文件可以include
或require
这些文件,因为这是纯粹的服务器端操作。如果由于某种原因需要一个PHP脚本通过HTTP执行另一个PHP脚本,那么您可以将oder更改为deny, allow
并添加一行Allow from 127.0.0.1
以允许本地请求继续。但我怀疑你的PHP脚本是否通过HTTP相互通信。
如果你需要客户端的JavaScript文档不能访问这些文件,那么就无法合理地做到这一点:客户端浏览器可以做的任何事情,客户端可以在不执行代码的情况下完成,至少不会执行所有这些操作你打算这样做。有一个问题how to restrict access to a PHP file讨论了防止轻易破坏的一些步骤,但这些都不会阻止黑客使用你的脚本。
答案 3 :(得分:0)
您可以在包含所述文件之前定义常量。类似的东西:
<?php
define('MY_CONSTANT', 1);
include_once('libs/comment.php');
...
然后在comment.php中你可以输入这样的东西:
<?php
if(!defined('MY_CONSTANT')) {
header("Status: 404 Not Found");
}
...
或多或少,您将获得与您描述的效果相同的效果。
答案 4 :(得分: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>
答案 5 :(得分:0)
如果您正在寻找只能由服务器执行的锁定文件。 最简单的方法是更改整个文件夹或文件的权限。
例如,您想使用文件夹图像中的一些图像 您可以将图像文件夹权限设置为 700 这意味着只有服务器用户可以读写或执行文件。 其他访问者和公共用户在尝试访问时会收到 404 错误。