2010-12-17 12 views
4

私が知っているのは、ユーザーが入力したデータからPHPのMySQLデータベースにクエリを実行するときに、データをサニタイズする必要があることです。私が立ち上げているプロジェクトでは、ldap_bind()関数を使ってログイン用のActive Directoryを認証します。LDAP_bindクエリのサニタイズ

匿名バインドの試みを防ぐためにパスワードを確認するための手順を実行しましたが、ユーザーが入力したデータを使用するときに通常と同様に他の予防策を講じる必要があるかどうかは疑問です。あるいは、これはActive Directoryが自分自身を世話するものですか?

+0

ようこそ。あなたは[adLDAP PHPライブラリ](http://adldap.sourceforge.net/) – Nathan

答えて

4

私はOpenLDAPの一種の男ですが、私が誤解していなければ、これを特殊文字で利用する方法はありません。

しかし、特にユーザー名や生成されたバインドパスには存在しないと思われるものを除外するのは良い方法ではありません。たとえば:

$ myname = preg_replace( "/ [^ a-zA-Z0-9_ \ - ] /"、 ""、$ myname);

これは、小文字、大文字、数字、アンダースコア、スペース、ダッシュを除いてすべてを削除します。 「何かを拒否する」というのではなく、「これだけを許可する」ロジックを使用する方が常に安全です。あなたはすべてのことを拒否することは決して考えられません。

2

パスワードがnullでないことを確認するのに注意してください。 LDAPの標準によれば、ユーザー名とパスワードなしのバインドは匿名バインドとしてカウントされ、成功します。

ユーザーの資格情報を検証するバインド試行の成功/失敗を使用している場合は、nullパスワードを使用すると偽装することができます。

関連する問題