情報技術の継続的な発展により、インターネットは人々の日常生活に欠かせないものになりました。その中でも、Web アプリケーションは、インターネット開発の分野で最も一般的で人気のあるアプリケーション タイプです。 LDAP (Lightweight Directory Access Protocol) は、Web アプリケーションで一般的に使用されるディレクトリ アクセス プロトコルです。しかし同時に、LDAP インジェクション攻撃は、Web アプリケーションにおける一般的なセキュリティ脅威の 1 つにもなりました。この記事では、PHP を使用して LDAP インジェクション攻撃を防ぐ方法を紹介します。
LDAP インジェクション攻撃は、悪意のある LDAP クエリ文字列を作成し、実行可能な LDAP コードを Web アプリケーションに挿入することによって Web アプリケーションを攻撃します。機密情報を取得するためにプログラム内で実行されます。情報を盗んだり、攻撃者の悪意のある目的を達成したりする可能性があります。 LDAP インジェクション攻撃と SQL インジェクション攻撃の原理は似ており、どちらも特定の文字を入力することで Web アプリケーションを欺き、攻撃の目的を達成します。
データ フィルタリングは、LDAP インジェクション攻撃を防ぐ効果的な手段です。 PHP には、htmlspecialchars()、addslashes() など、入力のフィルタリングに使用できる組み込み関数がいくつかあります。これらの関数は、一部の特殊文字を HTML エンティティにエスケープしたり、文字列にバックスラッシュを追加したりすることで、悪意のある文字の実行を防ぐことができます。例:
$username = htmlspecialchars($_POST['username']); $password = addslashes($_POST['password']);
Web アプリケーションでは、ユーザー データは処理後に表示されるため、攻撃者はその出力を変更することができます。攻撃を実行するアプリケーション。したがって、出力に実行可能な LDAP コードが含まれないように、出力をフィルタリングする必要があります。 PHP では、htmlentities()、strip_tags() などの組み込み関数を使用して出力をフィルタリングできます。例:
echo htmlentities($username);
使用中 LDAP をクエリするときは、インジェクション攻撃を避けるために、PHP プリコンパイル済みステートメントを使用して LDAP クエリ ステートメントを実行する必要があります。 PHP には、プリコンパイルされた LDAP クエリ ステートメントを作成する ldap_prepare() 関数が用意されています。この関数は、プレースホルダを使用してクエリ ステートメント内の変数を置き換えることができます。例:
$query = ldap_prepare($ldap_conn, "(&(objectClass=user)(samaccountname=?))", array($username));
このように、LDAP クエリ ステートメントを実行するときに、ユーザーは入力された変数は、プリコンパイルされたクエリ ステートメントとは別に処理されるため、LDAP インジェクション攻撃をある程度回避できます。
クエリに LDAP を使用する場合、防御のために PHP を使用して LDAP クエリ文字列をフィルタリングすることもできます。 PHP には、LDAP クエリ文字列内の特殊文字を正当な文字にエスケープできる ldap_escape() 関数が用意されており、これにより特殊文字が LDAP コードとして実行されるのを防ぎます。例:
$username = ldap_escape($username, "", LDAP_ESCAPE_FILTER); $query = "(uid={$username})";
LDAP を使用してクエリを実行する場合は、次のような PHP が提供する安全な接続方法を使用する必要があります。データ送信のセキュリティを確保するための TLS または SSL。 PHP では、ldap_start_tls() 関数を使用して TLS を使用して LDAP サーバーに接続するか、ldap_ssl_connect() 関数を使用して SSL を使用して LDAP サーバーに接続できます。例:
$ldap_conn = ldap_ssl_connect($ldap_server, $ldap_port);
最後に、LDAP インジェクション攻撃を防御するための次の PHP コード サンプルを提供します。
上記は、次の方法とサンプルです。 PHP を使用して LDAP インジェクション攻撃を防御します。皆様のお役に立てれば幸いです。
以上がPHP を使用して LDAP インジェクション攻撃から保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。