LDAP 클라이언트는 간단한 인증 방법을 제공하는 ‘바인드 요청’을 통해 LDAP 서버에 인증합니다.
LDAP의 간편 인증은 세 가지 메커니즘으로 사용할 수 있습니다:
- 길이가 0인 사용자 이름 및 비밀번호 값으로 바인드 요청을 수행하는 익명 인증 메커니즘.
- 길이가 0인 비밀번호 값으로 바인드 요청을 수행하여 인증되지 않은 인증 메커니즘.
- 길이가 0이 아닌 비밀번호 값으로 바인드 요청을 수행하여 이름/비밀번호 인증 메커니즘.
익명 바인드와 인증되지 않은 바인드는 비밀번호를 제공하지 않고도 LDAP 디렉터리의 정보에 액세스할 수 있으므로 사용을 권장하지 않습니다.
규칙을 어긴 코드
import ldap
def init_ldap():
connect = ldap.initialize('ldap://example:1389')
connect.simple_bind('cn=root') # 규칙을 어긴 코드
connect.simple_bind_s('cn=root') # 규칙을 어긴 코드
connect.bind_s('cn=root', None) # 규칙을 어긴 코드
connect.bind('cn=root', None) # 규칙을 어긴 코드
규칙을 준수한 해결책
import ldap
import os
def init_ldap():
connect = ldap.initialize('ldap://example:1389')
connect.simple_bind('cn=root', os.environ.get('LDAP_PASSWORD')) # 규칙을 준수한 코드
connect.simple_bind_s('cn=root', os.environ.get('LDAP_PASSWORD')) # 규칙을 준수한 코드
connect.bind_s('cn=root', os.environ.get('LDAP_PASSWORD')) # 규칙을 준수한 코드
connect.bind('cn=root', os.environ.get('LDAP_PASSWORD')) # 규칙을 준수한 코드
같이보면 좋은 자료
- OWASP Top 10 2021 Category A7 - 식별 및 인증 실패
- OWASP Top 10 2017 Category A2 - 인증 실패
- MITRE, CWE-521 - 취약한 암호 요구 사항
-
ldapwiki.com - 단순 인증
If you like SONARKUBE, don’t forget to give me a star.