ホームページ >バックエンド開発 >PHPの問題 >ユーザー投稿コンテンツを PHP で操作する際に注意すべき危険な機能について 3 分で学びます。

ユーザー投稿コンテンツを PHP で操作する際に注意すべき危険な機能について 3 分で学びます。

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-22 16:06:591998ブラウズ

この記事では、PHPでユーザー投稿コンテンツを操作する際に注意すべき危険な機能を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

ユーザー投稿コンテンツを PHP で操作する際に注意すべき危険な機能について 3 分で学びます。

私たちのプログラム開発では、ユーザー入力がセキュリティ問題を解決するための最初のエントリ ポイントです。なぜそんなことを言うのですか? SQL インジェクション、XSS、ファイル アップロードの脆弱性のいずれであっても、それらはすべてユーザーが送信した入力パラメータに関連しています。今日はこれらの問題については説明しません. 以下のユーザー入力について主に説明します.

include($g);

のような、検証なしで直接操作に使用できない危険な関数がいくつかあります 仮定 この $g が内容ですユーザーによって送信されました。検証せずにファイルをインクルードするためにこのパラメーターを直接使用します。渡すパラメーターは ?g=/etc/passwd であるため、サーバー上のすべてのユーザー アカウント情報が直接漏洩した可能性があります。

さらに、シェルコマンドを実行する一部の関数は非常に危険です。

echo system($g);

渡すパラメータが ?g=ls -la / の場合、同じサーバー ディレクトリも表示されます。これはディレクトリ構造のみを示しています。他のより恐ろしいコマンドが使用された場合、結果は悲惨なものになります。

同様に、特にファイルを削除する場合、IDやファイル名を指定してファイルを操作することが多く、判断を誤ると非常に重要なファイルを直接削除してしまう可能性があります。

unlink('./' . $g);

$g を ?g=../../../xxxx として構築し続けます。権限が許可されていれば、さまざまなシステム ファイルを削除できます。

これらの内容については、実は PHP の公式マニュアルにいくつか良い提案がされているので、PHP マニュアルの内容を直接見てみるのも良いでしょう。

多くの PHP プログラムの主な弱点は、PHP 言語自体の問題ではなく、プログラマーのセキュリティ意識の低さが原因です。したがって、誤ったデータ送信による影響を発見するには、コードの各部分で起こり得る問題に常に注意を払う必要があります。

常にコードに注意を払って、クライアントから送信されたすべての変数が適切にチェックされていることを確認してから、いくつかの質問を自問してください。

  • このスクリプトは、次のことにのみ影響します。目的のファイル?

  • #異常なデータは、提出後に何らかの影響を与える可能性がありますか?

  • このスクリプトは意図しない目的に使用できますか?

  • このスクリプトを他のスクリプトと組み合わせて悪いことをすることはできますか?

  • #すべての取引は適切に記録されていますか?
  • register_globals、magic_quotes、またはプログラミングをより便利にするその他の設定をオフにすることも検討してください。ただし、変数の正当性、ソース、および値が混乱する可能性があります。開発中に、error_reporting(E_ALL) モードを使用すると、変数が使用前にチェックまたは初期化されているかどうかを確認し、異常なデータが台無しになるのを防ぐことができます。

実際、これらの提案に従う限り、ほとんどの安全上の問題は解決できます。繰り返しますが、ユーザー出力は信頼できません。テスト中に、境界値、特殊シンボル、特殊コマンド、範囲外の値、ディレクトリのアクセス許可などを含むさまざまな検証を行ってください。必要な場合を除き、ユーザー入力をファイル、スクリプト実行、およびファイル操作の直接パラメータとして使用しないでください。使用する必要がある場合は、さまざまな形式のフィルタリングと検証を実行する必要があります。

テスト コード:

[https://github.com/zhangyue05...

推奨学習:

php ビデオ チュートリアル

以上がユーザー投稿コンテンツを PHP で操作する際に注意すべき危険な機能について 3 分で学びます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。