gpt4 book ai didi

php - 防止直接访问,是否可以欺骗 php 定义?

转载 作者:行者123 更新时间:2023-12-02 07:32:30 25 4
gpt4 key购买 nike

我想阻止直接访问我的 header.phpfooter.php 文件...

我知道在 SO 上有很多关于如何防止直接访问的问题,但没有一个真正解释这些方法的安全性。

像下面的例子这样的事情,看起来像是通过默默无闻来实现安全,因为任何人都可以将 $_POST[$variable] 设置为他们想要的任何东西。

if (!isset($_POST['field'])) {
die();
}

/* AND */

if (empty($_POST)) {
exit("Direct access not allowed");
}

但是如何使用define 函数来防止直接访问呢?设置 define 是否更安全?

有点像

// index.php
define("DIRECTACCESS", "NO");
include 'header.php';

// header.php
if(DIRECTACCESS == "NO")
die('No direct access allowed');

或者我什至可以这样做:

// index.php
$daccess = 'NO';
include 'header.php';

// header.php
if(!isset($daccess))
die('No direct access allowed');

最佳答案

只需使用您的 .htaccess 文件。这将阻止从外部访问,但仍将允许包括:

<Files ~ "\.inc\.php$">
Order allow,deny
Deny from all
</Files>

现在只需将您的包含文件重命名为 .inc.php,将不允许从外部访问。

这样可以避免对代码进行无意义的修改。

更好的做法是将包含文件移出文档根目录 (include('../includes/header.php'); ) 并从那里包含它们,自动禁止直接访问。

关于php - 防止直接访问,是否可以欺骗 php 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com