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

WBOY
リリース: 2016-08-08 09:25:28
オリジナル
1185 人が閲覧しました

現在、PHP に基づいた Web サイト開発が主流となっており、この記事の著者は Web サイトの脆弱性を軽減することを目的として、PHP による Web サイトの攻撃とセキュリティの防止に焦点を当てています。

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

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

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

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

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

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

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

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

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

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

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 独自の関数を使用して実現できます。 2 番目は、セッション名を変更することです。通常、この変数は Cookie に保存されます。

3 番目は、透過的なセッション ID をオフにすることです。いわゆる透過性とは、HTTP リクエストがセッション ID を作成するために Cookie を使用しない場合に、透過的なセッション ID をオフにすることを意味します。 4 番目は、URL 経由で隠しパラメーターを渡すことで、たとえハッカーがセッション データを取得したとしても、関連するパラメーターが隠されているため、セッション ID 変数の値を取得することが困難になります。

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

ハッカーが SQL インジェクションを実行する方法は数多くあり、それらは柔軟で変更可能ですが、SQL インジェクションに共通しているのは、入力フィルタリングの脆弱性を利用することです。したがって、SQLインジェクションを根本的に防ぐためには、リクエストコマンド、特にクエリリクエストコマンドのフィルタリングを強化することが根本的な解決策となります。

具体的には以下の点が含まれます:

1 つ目は、フィルタリング ステートメントをパラメータ化することです。つまり、ユーザー入力をステートメントに直接埋め込むのではなく、パラメーター化されたステートメントを通じてユーザー情報を入力します。

2 つ目は、Web サイトを開発するときに解釈プログラムをできるだけ使用しないことです。 ハッカーはこの方法をよく使用します。

3 番目は、Web サイトの開発中に Web サイト上のバグをできる限り回避することです。そうしないと、ハッカーがこの情報を使用して Web サイトを攻撃する可能性があります。さらに、SQL インジェクションを防御するだけでは十分ではありません。さらに、専門的な脆弱性スキャン ツールを頻繁に使用する必要があります。 Web サイトの脆弱性をスキャンします。

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

ハッカーがスクリプト実行の脆弱性を利用して攻撃する手段は多様かつ柔軟です。そのため、ハッカーによるスクリプト実行の脆弱性の攻撃を効果的に防ぐには、複数の防御方法を組み合わせて使用​​する必要があります。

ここでは一般的に使用される 4 つの方法があります:

1 つ目は、実行可能ファイルのパスを事前に設定することです。 safe_moade_exec_dir;

を通じて実現できます

2 番目は、コマンド パラメーターを処理することであり、通常は、escapeshellarg 関数を使用して実装されます。

3 つ目は、システム独自の関数ライブラリを使用して外部コマンドを置き換えることです。

4つ目は、動作中の外部コマンドの使用を削減することが可能です。

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

PHPのグローバル変数の脆弱性については、以前のPHPバージョンでもこのような問題がありましたが、PHPバージョン5.5にバージョンアップ後は、php.iniの設定とGPCへのruquest_orderの設定で解決できるようになりました。

さらに、php.ini 設定ファイルで、magic_quotes_runtime のブール値を設定して、外部引用符付きデータのオーバーフロー文字にバックスラッシュを追加するかどうかを設定できます。

ウェブサイトプログラムがサーバーのどの設定でも実行できることを確認するため。 get_magic_quotes_runtime を使用してプログラム全体の先頭で設定ステータスを検出し、手動で処理するかどうかを決定するか、set_magic_quotes_runtime(0) を使用して最初 (または自動エスケープが必要ないとき) で設定をオフにすることができます。

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

PHPファイルの漏洩については、サーバーの設定や構成で防ぐことができます。

ここでの具体的な操作は次のとおりです:

まず、ハッカーがエラー プロンプトを通じてデータベース情報や Web ページ ファイルの物理パスを取得できないように、PHP コード内のエラー プロンプトをオフにします。

2 つ目は、open_basedir を慎重に設定することです。つまり、ディレクトリ外でのファイル操作を禁止します。これにより、ローカル ファイルやリモート ファイルが攻撃されるのを防ぐことができ、セッション ファイルやファイルのアップロードの防止にも注意する必要があります。攻撃

3 つ目は、safe-made を on に設定して、実行するコマンドを統一することで、PHP Web サイトのセキュリティ要素を効果的に向上させることができます。

上記では、PHP Web サイトの一般的なセキュリティ脆弱性とそれに対応する予防策の概要を、関連コンテンツも含めて紹介しました。PHP チュートリアルに興味のある友人にとって役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!