PHP Manual

構成は以下の通りです。

11. 09. 2019

Obsah článku

| サポート|PHP 4、PHP 5、PHP 7

|---------------|--------- | 短い説明|別のテキストファイルまたはスクリプトをスクリプトに追加します。 | 要件|挿入する他のテキストファイルやスクリプト。 | 注意|外部ファイルを読み込むことができません。

商品説明

別のテキストファイルやスクリプトをページに挿入します。プレーン/テキストファイルをサポートします。

埋め込まれたファイルは、あたかもページ内に直接存在するかのように動作します。

埋め込まれたスクリプトは自動的に実行されます。

埋め込みスクリプトは、変数の値を転送します。

外部ストレージから読み込むことができません。フォーマットされていないプレーンなテキストとPHPファイルのみ読み込み可能です。

許可されたパス形式。

  • script.php - 同じディレクトリにあるファイル、実行されます。
  • script.html - 同じディレクトリにあるファイルですが、実行されません。
  • ./file.php - 同じディレクトリにあるファイルが実行されます。
  • ../page.html
  • foldersfile.php - write in Windows
  • アドレス/DalsiAddress/file.php` - Unixシステムで書き込みます。

スラッシュのタイプ ******/** は相互変換が可能なので、そのような処理をする必要はありません。

不正なパスエントリ:https://domena.pripona/slozka/soubor.php

類似機能

include 'file.php';

これは file.php スクリプトをページに挿入して実行します。

vars.php

$color = '碧い';
$fruit = 'アップル';

test.php

$color = '';
$fruit = '';
echo 'A' . $color . '' . $fruit; // A
include 'vars.php';
echo 'A' . $color . '' . $fruit; // 青リンゴ

警告:以下の表記は不可能です。変数の内容を定義して転送してください!

include 'file.php?parameter=neco';

戻り値

なし、ファイルを置くだけです。

**注:**ファイルの内容を比較することができますが、これはセキュリティ上のリスクがあります。括弧の順番が重要!例

if ((include 'file.php') == 'よっしゃー') {
echo '値は "OK "です。';
}

これは潜在的なセキュリティリスクです

file_get_contents(), readfile() or fopen() で解決可能です。Fopen() は、.txt と .html ファイルにのみ使用する必要があります。

より安全な読み出しは、カスタム関数を定義することで解決できます。

$string = get_include_contents('somefile.php');
function get_include_contents(string $filename): ?string
{
if (is_file($filename)) {
ob_start();
include (string) $filename;
return ob_get_clean();
}
return null;
}

他の開発者からのメモやヒント

Jakub Vránaからメールが届きました。

include '記事/' . $_GET['記事'] . '.html';

これは非常に危険なことです。

攻撃者は、記事名として ../ などを使って別のディレクトリへのリンクを渡すことができ、最後にヌルバイトを渡すことで末尾を消すことができる場合もあります。

少なくとも basename() 関数は使うべきですが、ホワイトリストの値だけを許可するのがベターです。

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
4.
Status:
All systems normal.
2024