我正在寻找一种方法来验证从 Active Directory 插入的对象 SID 是否有效,是否可以使用preg_match()
or preg_match_all()
?
我在网上查找了用于此验证的正则表达式,但我找不到任何东西。
Example:
$sid = 'S-1-5-21-1220945662-1202665555-839525555-5555';
if ($validator->validateSid($sid)) {
// SID is valid!
}
我不擅长编写正则表达式,所以如果有人有任何意见,请告诉我,谢谢!
编辑:对于任何寻找具有以下正则表达式的代码的人:
preg_match("/^S-1-[0-5]-\d{2}-\d{10}-\d{10}-\d{9}-[1-9]\d{3}/", $search, $matches);
// Returns
array(
0 => S-1-5-21-1220945662-1202665555-839525555-5555
)
或者对于更宽松的模式:
preg_match("/S-1-5-21-\d+-\d+\-\d+\-\d+/", $sid, $matches);
// Returns
array(
0 => S-1-5-21-1220945662-1202665555-839525555-5555
)
hjpotter92 的答案适用于某些 SID,但不是全部。
每个子权限由一个 32 位整数组成,可以是 10 位数字,也可以是 8 位数字。您应该将正则表达式编辑为:
/^S-1-[0-59]-\d{2}-\d{8,10}-\d{8,10}-\d{8,10}-[1-9]\d{3}/
每当 Windows 下创建新的发行机构时(例如
例如,部署一台新机器或创建一个域),它被分配一个
SID以5(任意值)作为权限标识符;一个固定的
值 21 用作该组的根的唯一值
下属机构和创建并分配 96 位随机数
三个下属机构,每个下属机构收到
32 位块。
https://msdn.microsoft.com/en-us/library/cc246018.aspx https://msdn.microsoft.com/en-us/library/cc246018.aspx
SID 是如何创建的 https://i.stack.imgur.com/MXntk.png
https://en.wikipedia.org/wiki/Security_Identifier https://en.wikipedia.org/wiki/Security_Identifier
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)