PHPの危険なfile_put_contents関数の詳細説明
file_put_contents() 関数は文字列をファイルに書き込みます。最近、file_put_contents 関数には私が気付かなかった問題があることがわかりました。次の記事では、PHP の危険な file_put_contents 関数に関する関連情報を中心に紹介します。必要な方は一緒に参照してください。
file_put_contents 関数の 2 番目のパラメーター データの公式 Web サイトの定義を見てみましょう:
data 要写入的数据。类型可以是 string,array 或者是 stream 资源(如上面所说的那样)。 如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。 参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join('', $array))。
ご覧のとおり、データ パラメーターは配列にすることができ、これは自動的に文字列に変換されます。
join('',$array)
この関数がファイルにアクセスするとき、次のルールに従います:
FILE_USE_INCLUDE_PATH が設定されている場合、*filename* のコピーの組み込みパスがチェックされます
- ファイルが存在しない場合は、ファイルが作成されます
- ファイルを開く
- LOCK_EX が設定されている場合、ファイルはロックされます
- FILE_APPEND が設定されている場合は、ファイルの末尾に移動します。それ以外の場合、ファイルの内容はクリアされます
- ファイルにデータを書き込みます
- ファイルを閉じて、すべてのファイルのロックを解除します
- 成功すると、関数はファイルに書き込まれた文字数を返します。失敗した場合は False が返されます。
- ただし、文字列フィルタリング関数は通常、次のような preg_match 関数を使用してフィルタリングします。 strcmp、strlen、md5 など、文字列を処理する多くの関数は、配列が渡されるとエラーになり NULL を返すことがわかっています。ただし、preg_match 関数は、エラーが発生した場合に false を返します。ここでは、 を通じてそれを確認できます。この場合、preg_matchの通常のフィルタリングは無効となります
。 したがって、ファイルアップロードのコードは次のように書かれると思います
if(preg_match('/\</',$data)){ die('hack'); }
したがって、次のように var_dump(preg_match('/</',$data));
を渡して
をバイパスすることができます
修理方法
content[]=<?php phpinfo();?>&ext=php
修正するには、fwrite 関数を使用して、危険な file_put_contents 関数を置き換えることです。fwrite 関数は、配列の場合、エラーが false を返します。 PHP file_put_contents() 関数に関する記事
PHP の fwrite と file_put_contents の違い
以上がPHPの危険なfile_put_contents関数の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
