ホームページ >バックエンド開発 >PHPチュートリアル >PHP Web サイトの一般的なセキュリティ脆弱性と防御方法

PHP Web サイトの一般的なセキュリティ脆弱性と防御方法

WBOY
WBOY転載
2023-01-05 16:21:164595ブラウズ

この記事では、PHP に関する関連知識を提供します。主に、Web サイトに関する一般的なセキュリティ脆弱性と防御方法をいくつか紹介します。一緒に見てみましょう。皆様のお役に立てれば幸いです。

PHP Web サイトの一般的なセキュリティ脆弱性と防御方法

1. PHP Web サイトの一般的なセキュリティ脆弱性

PHP の脆弱性に関しては、現在 5 つの一般的な脆弱性があります。セッションファイルの脆弱性、SQLインジェクションの脆弱性、スクリプトコマンド実行の脆弱性、グローバル変数の脆弱性、ファイルの脆弱性です。ここでは、これらの各脆弱性について簡単に紹介します。

1. セッション ファイルの脆弱性

セッション攻撃は、ハッカーによって最も一般的に使用される攻撃方法の 1 つです。ユーザーが Web サイトにアクセスするとき、ページに入るたびにアカウント番号とパスワードを入力する必要がないように、PHP はユーザーの使用とアクセスを容易にするためにセッションと Cookie を設定します。

2. SQL インジェクションの脆弱性

Web サイトを開発する際、プログラマーはユーザー入力データに対する包括的な判断力を欠いていたり、データのフィルタリングに失敗したりします。サーバーにアクセスしてユーザー情報のクエリなどの悪意のある情報を実行します。ハッカーは、悪意のあるプログラムから返された結果に基づいて、対応する情報を取得できます。これは Yuexingwei の SQL インジェクションの脆弱性です。

3. スクリプト実行の脆弱性

スクリプト実行の脆弱性の一般的な原因は、Web サイトの開発時にプログラマがユーザーによって送信された URL パラメータをフィルタリングすることです。それほど一般的ではありませんが、ユーザーが送信した URL には、クロスサイト スクリプティング攻撃につながる悪意のあるコードが含まれている場合があります。以前の PHP Web サイトにはスクリプト実行の脆弱性がよく存在していましたが、PHP バージョンのアップグレードにより、これらの問題は軽減されるか、存在しなくなりました。

4. グローバル変数の脆弱性

PHP の変数は、他の開発言語のように使用する場合、事前に宣言する必要はありません。宣言せずに直接使用します。使用時にシステムが自動的に作成し、変数の型を指定する必要はありません。変数の型はコンテキストに基づいてシステムが自動的に決定します。この方法は、プログラマがプログラミングでエラーを犯す可能性を大幅に減らすことができ、非常に使いやすいです。

5. ファイルの脆弱性

ファイルの脆弱性は、通常、Web サイトの設計時に Web サイト開発者が外部から提供するデータを適切にフィルタリングしていないことが原因です。これにより、ハッカーが脆弱性を悪用して、Web プロセス上で対応するコマンドを実行するようになります。このコード部分を lsm.php に含める場合: include(##b./aaa.ph p.)、ハッカーの場合、変数 b を使用してこれを行うことができます。 ” /aaa.php”.)、ハッカーの場合、変数

2. PHP 一般的な脆弱性の予防策

1. セッション脆弱性の予防

正面から分析によると、セッション攻撃の最も一般的なタイプはセッション ハイジャックです。つまり、ハッカーがさまざまな攻撃方法を通じてユーザーのセッション ID を取得し、攻撃されたユーザーの ID を使用して対応する Web サイトにログインします。このため、セッションIDを定期的に変更する、セッションIDの変更はPHP独自の機能を利用する、セッション名を変更する、通常はデフォルトのセッション名を使用する、という方法が考えられます。 PHPSESSID です。この変数は通常、Cookie に保存されます。名前が変更されると、ハッカーによる一部の攻撃をブロックできます。3 つ目は、透明なセッション ID を閉じることです。いわゆる透明性とは、定式化に Cookie が使用されないことを意味しますHTTP リクエスト。セッション ID を使用する場合、セッション ID はリンクを使用して渡されます。透過的なセッション ID をオフにするには、PHP.ini ファイルを操作します。4 番目は、URL 経由で隠しパラメータを渡すことです。たとえハッカーがセッション データを取得したとしても、関連するパラメータは隠蔽されます。はい、セッション ID 変数の値を取得することも困難です。

2. SQL インジェクションの脆弱性の防止

ハッカーは SQL をインジェクションするさまざまな方法を持っており、それらは柔軟で変更可能ですが、共通しているのは、 SQLインジェクションとは、入力フィルタリングの脆弱性を悪用することがポイントです。したがって、SQLインジェクションを根本的に防ぐためには、リクエストコマンド、特にクエリリクエストコマンドのフィルタリングを強化することが根本的な解決策となります。具体的には、次の点が含まれます。 まず、フィルタリング ステートメントがパラメータ化されます。つまり、ユーザー情報の入力は、ステートメントにユーザー入力を直接埋め込むのではなく、パラメーター化されたステートメントを通じて実現されます。 2 つ目は、Web サイトの開発時に解釈プログラムの使用をできる限り少なくすることです。ハッカーは違法なコマンドを実行するためにこの方法をよく使用します。3 つ目は、Web サイトの開発時に Web サイトのバグをできる限り回避することです。そうしないと、ハッカーがこの情報を使用する可能性があります。」 SQL インジェクションを防御するだけでは十分ではなく、Web サイトの脆弱性をスキャンするには、専門的な脆弱性スキャン ツールを頻繁に使用する必要があります。

3. スクリプト実行の脆弱性の防止

ハッカーがスクリプト実行の脆弱性を利用して攻撃する手段は多様かつ柔軟です。ハッカーによるスクリプト実行の脆弱性の攻撃を効果的に防止するには、複数の防止方法を組み合わせて使用​​する必要があります。ここでよく使われる方法は以下の4つです。 1 つは、実行可能ファイルのパスを事前に設定することです。これは、safe_moade_exec_dir によって実現できます。2 つ目は、通常、escapeshellarg 関数を使用してコマンド パラメータを処理することです。3 つ目は、システム独自の関数ライブラリを使用して外部コマンドを置き換えることです。4 つ目は、動作中の外部コマンドの使用を減らすことです。

4. グローバル変数の脆弱性を防ぐ

PHP グローバル変数の脆弱性については、以前の PHP バージョンではこのような問題がありましたが、PHP 以降ではバージョンが 5.5 にアップグレードされる場合、これは php.ini を設定し、ruquest_order を GPC に設定することで実現できます。さらに、php.ini 設定ファイルで、Magic_quotes_runtime のブール値を設定して、外部引用符で囲まれたデータ内のオーバーフロー文字にバックスラッシュを追加できます。 Web サイト プログラムがサーバーのどのような設定状態でも実行できることを保証するため。 get_magic_quotes_runtime を使用してプログラム全体の先頭で設定ステータスを検出し、手動で処理するかどうかを決定するか、set_magic_quotes_runtime(0) を使用して最初 (または自動エスケープが必要ないとき) で設定をオフにすることができます。

5. ファイルの脆弱性の防止

PHP ファイルの漏洩については、サーバーの設定と構成によって防止の目的を達成できます。ここでの具体的な操作は次のとおりです: まず、ハッカーがエラー プロンプトを通じてデータベース情報や Web ページ ファイルの物理パスを取得できないように、PHP コード内のエラー プロンプトをオフにします。次に、ファイル操作を禁止することを意味する open_basedir を慎重に設定します。ディレクトリの外。処理中です。これにより、ローカル ファイルまたはリモート ファイルが攻撃されるのを防ぐことができます。ここでは、セッション ファイルやアップロードされたファイルへの攻撃の防止にも注意する必要があります。3 番目に、セーフメイドをオンに設定して、コマンドの実行を防ぎます。ファイルのアップロードを標準化して禁止することで、PHP Web サイトのセキュリティ要素を効果的に向上させることができます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP Web サイトの一般的なセキュリティ脆弱性と防御方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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