小编Vya*_*tva的帖子

Phil Strugeon REST 服务器 - Digest Auth 中是否真的存在安全漏洞,或者我误解了什么?

最近,我为 CodeIgniter 下载了Phil Strugeon REST 服务器。\n我查看了源代码,当我进行摘要式身份验证时,我看到了以下代码:

\n
if ($this->input->server(\'PHP_AUTH_DIGEST\'))\n{\n    $digest_string = $this->input->server(\'PHP_AUTH_DIGEST\');\n}\nelseif ($this->input->server(\'HTTP_AUTHORIZATION\'))\n{\n    $digest_string = $this->input->server(\'HTTP_AUTHORIZATION\');\n}\nelse\n{\n    $digest_string = "";\n}\n    \n
Run Code Online (Sandbox Code Playgroud)\n

稍后检查是否存在 $digest_string 和用户名:

\n
// This is the valid response expected\n$A1 = md5($digest[\'username\'].\':\'.$this->config->item(\'rest_realm\').\':\'.$valid_pass);\n$A2 = md5(strtoupper($this->request->method).\':\'.$digest[\'uri\']);\n$valid_response = md5($A1.\':\'.$digest[\'nonce\'].\':\'.$digest[\'nc\'].\':\'.$digest[\'cnonce\'].\':\'.$digest[\'qop\'].\':\'.$A2);\n\nif ($digest[\'response\'] != $valid_response)\n{\n    header(\'HTTP/1.0 401 Unauthorized\');\n    header(\'HTTP/1.1 401 Unauthorized\');\n    exit;\n}\n    \n
Run Code Online (Sandbox Code Playgroud)\n

Wikipedia中,我看到以下有关 HTTP Digest Auth 的文本:

\n
\n

对于后续请求,十六进制请求计数器 (nc) 必须大于它使用的最后一个值 \xe2\x80\x93,否则攻击者可以简单地使用相同的凭据“重放”旧请求。服务器负责确保计数器针对其发出的每个随机数值而增加,从而适当地拒绝任何错误请求。

\n

服务器应该记住它最近生成的随机数值。它还可以记住每个随机数值的发布时间,并在一定时间后使其过期。如果使用过期值,服务器应使用“401”状态代码进行响应,并将 stale=TRUE 添加到身份验证标头,指示客户端应使用提供的新随机数重新发送,而不提示用户输入另一个用户名和密码。

\n
\n

但是,我在源代码中看不到任何有关检查 cnonce、nc 或 nonce 的信息。\n这是否意味着从客户端记录请求到通过身份验证的服务器的人可能会在将来“重放”它并接收新的资源值?

\n

真的是脆弱吗?或者我误解了什么?

\n

rest codeigniter

5
推荐指数
1
解决办法
496
查看次数

标签 统计

codeigniter ×1

rest ×1