4

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

匿名バインドの試行を防ぐためにパスワードを確認する手順を実行しましたが、ユーザーが入力したデータを使用するときに通常行うような他の予防策を講じる必要があるかどうか疑問に思っています. それとも、これは Active Directory が自動的に処理するものですか?

4

2 に答える 2

4

私は OpenLDAP のような人ですが、間違っていなければ、これを特殊文字で悪用する方法はありません。

ただし、これは、特にユーザー名や生成されたバインド パスなど、存在しないことがわかっているものを削除することが適切でないという意味ではありません。例えば:

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

これにより、小文字、大文字、数字、アンダースコア、スペース、およびダッシュを除くすべてが取り除かれます。「何かを拒否する」よりも「これだけを許可する」ロジックを使用する方が常に安全です。拒否するすべてのものを考えることはできません。

于 2010-12-17T19:53:24.220 に答える
2

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

バインド試行の成功/失敗を使用してユーザーの資格情報を検証している場合、null パスワードはそれを偽造する良い方法です。

于 2010-12-19T02:15:36.960 に答える