以下是到目前为止我很确定需要转义的字符:
- \r
- \n
- \
- ,
- ;
- "
- '
- [
- ]
- >
- <
- +
我已经在互联网上进行了梳理,但没有找到(全面的)列表。
虽然我知道我可以仔细梳理所有相关的 RFC,但我:
- 不要相信自己能找到一切,
- 没时间,而且
- 我很确定这是外面有人已经记住的东西。
编辑:
哦,这就是我在该列表中获得一些值的地方。
更新!
在这里无意中找到了这份清单。
值得注意的是,在这个链表(嘿......'链表')中隐含的是你被限制在某个字符集的假设,所以它错过了一些东西。也就是说,它错过了一个最危险的字符来不转义换行。虽然可以存储换行符,但如果不转义,用户可以注入任意 LDIF。因此,似乎最有意义的解决方案是:
(下面的复制粘贴是链接中的重要部分,以防链接丢失。)
减轻
正确使用用户提供的输入到 LDAP 的转义序列会有所不同,具体取决于用户输入是用于创建 DN(专有名称)还是用作搜索过滤器的一部分。下面的清单显示了需要转义的字符以及每种情况下的适当转义方法。
用于 DN - 需要 \ 转义
&
!
|
=
<
>
,
+
-
"
'
;
用于过滤器 - 需要 {\ASCII} 转义
( {\28}
) {\29}
\ {\5c}
* {\2a}
/ {\2f}
NUL {\0}