ホームページ >バックエンド開発 >PHPチュートリアル >PHP Web サイトの一般的なセキュリティ脆弱性とそれに対応する予防策の概要
PHP Web サイトの一般的なセキュリティ脆弱性とそれに対応する予防策のまとめ
現在、PHP に基づいた Web サイト開発が現在の Web サイト開発の主流となっています。この記事の著者は、PHP の側面を探ることに重点を置いています。 Web サイトの攻撃とセキュリティの防止、Web サイトの脆弱性を減らすことを目的としており、皆様のお役に立てれば幸いです。
1. 一般的な PHP Web サイトのセキュリティ脆弱性
PHP の場合 現在、一般的な脆弱性が 5 つあります。セッションファイルの脆弱性、SQLインジェクションの脆弱性、スクリプトコマンド実行の脆弱性、グローバル変数の脆弱性、ファイルの脆弱性です。ここでは、これらの各脆弱性について簡単に紹介します。
1. セッション ファイルの脆弱性
セッション攻撃は、ハッカーによって最も一般的に使用される攻撃方法の 1 つです。ユーザーが特定の Web サイトにアクセスするとき、ページに入るたびにアカウント番号とパスワードを入力する必要がないように、PHP はユーザーの使用とアクセスを容易にするためにセッションと Cookie を設定します。
2. SQL インジェクションの脆弱性
Web サイトの開発時に、プログラマーがユーザーにデータを入力する可能性があります。判断やフィルタリングが緩い場合、サーバーはユーザー情報のクエリなどの悪意のある情報を実行します。ハッカーは、悪意のあるプログラムから返された結果に基づいて、対応する情報を取得できます。これは SQL インジェクションの脆弱性です。
3. スクリプト実行の脆弱性
スクリプト実行の脆弱性の一般的な理由は、プログラマーが開発時に注意を払っていないことです。ユーザーが送信する URL パラメータのフィルタリングが少ないため、ユーザーが送信する URL にはクロスサイト スクリプティング攻撃につながる悪意のあるコードが含まれる可能性があります。以前の PHP Web サイトにはスクリプト実行の脆弱性がよく存在していましたが、PHP バージョンのアップグレードにより、これらの問題は軽減されるか、存在しなくなりました。
4. グローバル変数の脆弱性
PHP では、他の開発言語のように変数を使用する必要はありません。事前に、PHP の変数は宣言なしで直接使用でき、使用時にシステムが自動的に作成し、変数の型をコンテキストに基づいて自動的に決定します。この方法は、プログラマがプログラミングでエラーを犯す可能性を大幅に減らすことができ、非常に使いやすいです。
5. ファイルの脆弱性
ファイルの脆弱性は、通常、Web サイトの設計時に Web サイト開発者が提供する外部情報によって引き起こされます。データの適切なフィルタリングが欠如していると、ハッカーが脆弱性を悪用して Web プロセス上で対応するコマンドを実行する可能性があります。 lsm.php に include($b."/aaa.php".) のようなコードが含まれている場合、ハッカーにとっては変数 $b を通じてリモート攻撃が実行され、これがハッカー自身のコードである可能性があります。ウェブサイト。 a.php include=http://lZ7.0.0.1/b.php をサーバーに送信し、b.php の命令を実行します。
2. 一般的な PHP 脆弱性の予防策
1.セッションの脆弱性の防止
前の分析から、最も一般的なセッション攻撃はセッション ハイジャックであることがわかります。つまり、ハッカーはさまざまな攻撃方法を通じてユーザーのセッション ID を取得します。その後、攻撃されたユーザーの ID を使用して、対応する Web サイトにログインします。
このため、次の方法でそれを防ぐことができます。
まず、PHP を使用してセッション ID を定期的に変更します。セッション ID を変更するには、独自の関数が付属しています。
2 つ目は、セッション名を変更することです。通常、この変数は PHPSESSID として保存されます。 Cookie 内の名前を変更すると、ハッカーによる一部の攻撃をブロックできます。3 つ目は、透過的なセッション ID を閉じることです。その際、透過的なセッション ID をオフにするには、PHP.ini ファイルを介して隠しパラメータを渡します。 URL は、ハッカーがセッション データを取得したとしても、関連するパラメータが隠されているため、セッション ID 変数の値を取得することも困難です。
2. SQL インジェクションの脆弱性の防止
ハッカーが SQL インジェクションを実行する方法は数多くあり、それらは柔軟で変更可能ですが、SQL インジェクションに共通しているのは、入力フィルタリングの脆弱性を利用することです。したがって、SQLインジェクションを根本的に防ぐためには、リクエストコマンド、特にクエリリクエストコマンドのフィルタリングを強化することが根本的な解決策となります。 具体的には、次の点が含まれます。 まず、フィルタリング ステートメントがパラメーター化されます。つまり、パラメーター化されたステートメントを通じて、次の入力が実現されます。ユーザー入力を文に直接埋め込むのではなく、ユーザー情報を使用します。 2 つ目は、Web サイトを開発するときに、この方法を使用して不正なコマンドを実行することがよくあります。 🎜> 3 番目は、Web サイトの開発中に Web サイトのバグをできる限り回避することです。そうしないと、ハッカーがこの情報を使用して Web サイトを攻撃する可能性があります。また、単に SQL インジェクションを防御するだけでは十分ではありません。 Web サイトの脆弱性をスキャンするには、常に専門的な脆弱性スキャン ツールを使用してください。 3. スクリプト実行の脆弱性の防止 ハッカーがスクリプト実行の脆弱性を利用して攻撃する方法は数多くあります。この点で、ハッカーによるスクリプト実行の脆弱性の攻撃を効果的に防ぐには、さまざまな防止方法を採用する必要があります。 ここでは、一般的に使用される 4 つの方法があります: まず、実行可能ファイルへのパスを事前に設定します。 は、safe_moade_exec_dir を通じて実現できます。 2 つ目は、コマンド パラメーターを処理することであり、通常は 4 つ目は、動作中の外部コマンドの使用を減らすことです。
4. グローバル変数の脆弱性を防ぐ さらに、php.ini 設定ファイルで、ブール値を magic_quotes_runtime に設定することで、外部引用符付きデータのオーバーフロー文字にバックスラッシュを追加するかどうかを設定できます。 Web サイト プログラムがサーバーのどのような設定状態でも実行できることを保証するため。 get_magic_quotes_runtime を使用してプログラム全体の先頭で設定ステータスを検出し、手動で処理するかどうかを決定するか、set_magic_quotes_runtime(0) を使用して先頭 (または自動エスケープが必要ないとき) で設定をオフにすることができます。
5. ファイルの脆弱性の防止 ここでの具体的な操作は次のとおりです。 まず、ハッカーによる攻撃を防ぐために、PHP コード内のエラー プロンプトをオフにします。エラー プロンプトによるデータベースの取得 情報と Web ページ ファイルの物理パス; 2 つ目は、open_basedir を慎重に設定することです。これは、ディレクトリ外のファイル操作が禁止されることを意味します。 🎜>このように、ローカル ファイルまたはリモート ファイルは、攻撃を防ぐ保護的な役割を果たします。 に対する攻撃の防止にも注意する必要があります。 3 つ目は、safe-made をオンに設定して、実行されるコマンドの標準化とファイルのアップロードを禁止することです。これにより、PHP Web サイトのセキュリティ要素を効果的に向上させることができます。