LDAP (Lightweight Directory Access Protocol) は、分散ディレクトリ情報にアクセスして維持するためのアプリケーション プロトコルです。 PHP 言語開発では、LDAP を使用してディレクトリ サーバーと通信することが非常に一般的です。ただし、LDAP インジェクションは、攻撃者が重要なディレクトリ情報にアクセス、変更、削除できるようにする一般的なセキュリティ脆弱性です。この記事では、PHP 言語開発における LDAP インジェクションのセキュリティ脆弱性を回避する方法について説明します。
LDAP インジェクションは通常、開発者が LDAP クエリの構築時にユーザー指定のデータを適切にフィルタリングしてエスケープできなかった場合に発生します。データ。攻撃者は、悪意のあるスクリプトを LDAP クエリに挿入することにより、特定の LDAP コマンドを実行する可能性があります。したがって、ユーザーが指定したデータを使用して LDAP クエリ ステートメントを直接構築することは避けるべきです。
たとえば、LDAP ディレクトリ サーバーからユーザー情報を取得する PHP スクリプトを作成しているとします。 LDAP クエリ ステートメントを構築するときは、PHP の LDAP 関数ライブラリで提供されるフィルタを使用して、ユーザー指定の入力をフィルタリングしてエスケープする必要があります。以下はサンプル コード スニペットです。
$username = $_POST['username']; $filter = sprintf("(&(objectClass=user)(sAMAccountName=%s))", ldap_escape($username, '', LDAP_ESCAPE_FILTER)); $search_dn = "ou=people,dc=mycompany,dc=com"; $search_result = ldap_search($ldap_conn, $search_dn, $filter, []);
上記のコードでは、ldap_escape
関数を使用して、ユーザーが指定したユーザー名をフィルタリングしてエスケープし、LDAP インジェクション攻撃を防ぎます。
LDAP インジェクション攻撃を回避するもう 1 つの良い方法は、入力を検証して制限することです。これを実現するには、次のようなさまざまな手法を使用できます。
以上がPHP 言語開発における LDAP インジェクションのセキュリティ脆弱性を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。