转义与防护(Java 示意)
转义与防护(Java 示意)
风险:"(&(uid=" + user + ")(userPassword=" + pwd + "))"
安全:使用 RFC 4515 转义(需转义 * ( ) \ 与 NUL)
更好:使用库的过滤器构建接口,避免手工拼接服务侧加固
服务侧加固
查询账号只读且限制可访问的目录子树(base DN)
关闭匿名绑定
统一错误信息,避免暴露目录结构LDAP 转义规则与 SQL 不同,常见需要转义的字符为 * ( ) \ 与 NUL。
登录与查询场景把用户输入拼入 LDAP 过滤器(Filter)时,特殊字符可改变过滤条件;防护是使用库提供的转义或参数化接口,并限制目录服务的绑定权限。
风险:"(&(uid=" + user + ")(userPassword=" + pwd + "))"
安全:使用 RFC 4515 转义(需转义 * ( ) \ 与 NUL)
更好:使用库的过滤器构建接口,避免手工拼接查询账号只读且限制可访问的目录子树(base DN)
关闭匿名绑定
统一错误信息,避免暴露目录结构