gpt4 book ai didi

escaping - LDIF 值中哪些字符需要转义?

转载 作者:行者123 更新时间:2023-12-02 18:58:58 25 4
gpt4 key购买 nike

以下是我确信到目前为止需要转义的字符:

  • \r
  • \n
  • \
  • ;
  • '
  • [
  • ]
  • >
  • <
  • +

我在互联网上进行了梳理,但没有找到(全面的)列表。

虽然我知道我可以仔细梳理所有相关的 RFC,但我:

  1. 不要相信自己能找到一切,
  2. 没有时间,并且
  3. 我很确定有人已经记住了这些内容。

编辑:

哦,这是 where I got some of the values在该列表中。

最佳答案

更新!

偶然发现了这个列表here .

值得注意的是,这个链接列表(呵呵...“链接列表”)中隐含的是假设您仅限于某个字符集,因此它遗漏了一些东西。也就是说,它错过了一个最危险的字符而不是转义换行符。虽然可以存储换行符,但如果不进行转义,用户可以注入(inject)任意 LDIF。因此,似乎最有意义的解决方案是:

  • base64 对包含 ASCII 字符集之外的字符或包含控制字符的所有值进行编码(使用正则表达式很容易检测到;有正则表达式简写方式来表达 'ASCII characters''control chars' ,尽管因为非控制 ASCII 字符是全部在一个连续的 block 中,您可以只使用该范围的正则表达式;尽管文学编程说您不应该这样做,并且它也会增加误差范围),并使用::语法来指示这就是您正在做的事情,那么
  • 如果不是 base64 编码,请使用下面提供的转义序列(尽管出于显而易见的原因,您不需要 {\0} 转义),最后...
  • 在您的系统上测试一下。 Base64 转义的事情是相当无懈可击的,但最好创建每个字段都填充整个非控制 ASCII 字符集的用户,然后加载这些用户并检查一切是否正常。我还没有完成这一步,所以不要认为这是一个完美的解决方案。此外,您用来解析 LDIF 的软件可能不完全符合规范,或者可能存在其他问题,导致出现问题,所以即使这是完美的,YMMV。

(下面复制的内容是链接中的重要部分,以防链接擅离职守。)

缓解措施

正确使用用户提供的 LDAP 输入的转义序列会有所不同,具体取决于用户输入是用于创建 DN(专有名称)还是用作搜索过滤器的一部分。下面的 list 显示了需要转义的字符以及每种情况的适当转义方法。

用于 DN - 需要\转义

&
!
|
=
<
>
,
+
-
"
'
;

用于过滤器 - 需要 {\ASCII} 转义

(           {\28}
) {\29}
\ {\5c}
* {\2a}
/ {\2f}
NUL {\0}

关于escaping - LDIF 值中哪些字符需要转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17238102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com