ホームページ >php教程 >php手册 >動的 Web ページ内の PHP プログラム ファイルへの直接アクセスは許可されていません

動的 Web ページ内の PHP プログラム ファイルへの直接アクセスは許可されていません

WBOY
WBOYオリジナル
2016-06-21 08:57:591081ブラウズ

特定の php ファイルを使用する必要があり、他のユーザーがこのファイルに直接アクセスできないようにするため、global.php などの他のインクルード ファイルにパラメーターを定義し、それがアクセスされるページ データの前に定義されているかどうかを判断できます。 php このパラメータが定義されていない場合、アクセスは禁止されます。

global.php で定義

このようなコードは、未定義の変数 [このファイルでは未定義であると言うべきです] などの多くのセキュリティ問題を解決できます。

しかし、これは脆弱性がローカルに組み込まれるまではほとんど意味がありません。たとえば、

以下は引用内容です:
以下为引用的内容:

define('ROOT','./');
?>
在data.php文件中判断:

//data.php
if (!defined("ROOT")) {
echo "You Cannot Access This Script Directly, Have a Nice Day.";
exit();
}
?>

define('ROOT','./');
?>
data.php ファイルで判断します:

//data.php
if (!define("ROOT")) {
echo "このスクリプトには直接アクセスできません。良い一日を。";
exit();
}
?

以下为引用的内容:

if ( !defined('ROOT') )
{
die('Do not access this file directly.');
}
if ( !isset($root_path) )
{
$root_path = './';
}
require_once($root_path . 'config.php');
?>

common.php ファイルのコードを見てみましょう:

!define('X') 制限がない場合、$root_path はここで定義されず、リモート インクルードになります。

そして、変更されたスクリプトには 2 つの更新によって引き起こされるローカル インクルージョンがあります -->include 攻撃を使用すると、このローカル インクルージョンの脆弱性を利用して common.php をインクルードし、ブレークスルーを引き起こすことができます。 ')、リモート包含に変換します。

以下は引用内容です:
if ( !define('ROOT') )
{
die('このファイルに直接アクセスしないでください。');
}
if ( !isset($root_path) )
{
$root_path = './';
}
require_once($root_path . 'config.php');< br/>?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。