Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理以下HTTP 303上的标头_Http_Security_Http Status Code 303 - Fatal编程技术网

如何处理以下HTTP 303上的标头

如何处理以下HTTP 303上的标头,http,security,http-status-code-303,Http,Security,Http Status Code 303,我试图确定当客户机从服务器接收303(请参阅其他)时,应该如何处理头。具体来说,应该如何处理初始请求中发送的授权头 问题是:客户端向myserver.com发出请求(HTTP请求方法在这里不相关),位于myserver.com的服务器以303响应,Location头包含otherserver.com/some\u resource/。Postman和curl等工具将跟随重定向,在后续请求中将所有相同的头传递到otherserver.com。我还没有找到让这些工具删除标题的方法 在我所描述的情况下

我试图确定当客户机从服务器接收303(请参阅其他)时,应该如何处理头。具体来说,应该如何处理初始请求中发送的
授权

问题是:客户端向
myserver.com
发出请求(HTTP请求方法在这里不相关),位于
myserver.com
的服务器以303响应,
Location
头包含
otherserver.com/some\u resource/
。Postman和curl等工具将跟随重定向,在后续请求中将所有相同的头传递到
otherserver.com
。我还没有找到让这些工具删除标题的方法

在我所描述的情况下,将
授权
头发送到
otherserver.com
似乎存在安全风险:
otherserver.com
现在知道我的令牌,并且可能知道它可以在哪个主机上使用,所以令牌现在被破坏了。这还可能导致错误,具体取决于目标主机的配置方式。如果重定向到同一主机上的另一个资源(即,
myserver.com
),则需要(可能)发送
授权
头,因为它是同一主机,所以不会造成任何损害

实际上,在不同的情况下,正确的行为似乎是不同的。RFC中的没有解决此问题。在开发自己的API时,我编写了文档,告诉API客户端在重定向到
otherserver.com
时删除
Authorization
标题。然而,基于对curl和Postman的研究,我不清楚(a)典型HTTP客户端库的默认行为是什么,或者(b)HTTP客户端库是否允许在执行303重定向之前轻松修改HTTP头。因此,我的建议可能不实用。我还知道,服务器无法指示客户机在303重定向之后应该如何处理头


当HTTP客户端遵循303重定向时,它应该如何处理这些头?谁负责决定是否在重定向、HTTP客户端或服务器上使用相同的头?

您可以争辩说,当发送带有
otherserver.com
位置的303时,
myserver.com
trusted
otherserver.com
来处理您的令牌。它也可以在后台发送令牌。从客户端的角度来看,客户端信任
myserver.com
来处理令牌、安全地存储和验证令牌等。如果
myserver.com
决定将令牌发送到
otherserver.com
,客户端是否应覆盖该令牌?在这种情况下,当然可以,但总的来说,我认为不应该


由于攻击者无法控制合法资源
myserver.com
中的响应头,我认为通常情况下,默认情况下将令牌发送到它指定的另一台服务器是安全的,除非您有充分的理由不这样做(比如客户端上的显式策略).

您可以争辩说,当使用
otherserver.com
的位置发送303时,
myserver.com
trusted
otherserver.com
来处理您的令牌。它也可以在后台发送令牌。从客户端的角度来看,客户端信任
myserver.com
来处理令牌、安全地存储和验证令牌等。如果
myserver.com
决定将令牌发送到
otherserver.com
,客户端是否应覆盖该令牌?在这种情况下,当然可以,但总的来说,我认为不应该


由于攻击者无法控制合法资源
myserver.com
的响应头,我认为通常情况下,默认情况下将令牌发送到它指定的另一台服务器是安全的,除非您有很好的理由不这样做(比如客户端上有明确的策略)。

请参阅Downvoter:我可以问一下为什么吗?我可能错了,但你能指出哪里吗?我不是选民,但我可以告诉你我的想法。RFC没有说明服务器是否应该信任将客户端重定向到的目标。我看不出任何理由,例如,我不能将客户端重定向到Google或其他任何地方。如果我只能在我信任的网站上使用303,那么它的用途将更加有限。RFC并不建议限制303的使用。@PaulHolden我想我能理解你的观点,但是从凭证持有者(用户)的角度来看。他有一个发送到服务器的令牌。如果服务器不小心,它可能会将其存储在纯文本文件中。它可以用普通的电子邮件发送。或者,它可以在后台使用凭据调用另一个api,并返回结果,这是它不想做的,因为如果客户机直接调用另一个api,资源效率会高得多。无论如何,客户机对服务器具有固有的信任。为什么它会选择这一点信息,303的位置,作为不可信的吗?我可能错了,但你能指出哪里吗?我不是选民,但我可以告诉你我的想法。RFC没有说明服务器是否应该信任将客户端重定向到的目标。我看不出任何理由,例如,我不能将客户端重定向到Google或其他任何地方。如果我只能在我信任的网站上使用303,那么它的用途将更加有限。RFC并不建议限制303的使用。@PaulHolden我想我能理解你的观点,但是从凭证持有者(用户)的角度来看。他有一个发送到服务器的令牌。如果服务器不小心,它可能会将其存储在纯文本文件中。它可以用普通的电子邮件发送。或者,它可以在后台使用凭据调用另一个api,并返回结果,这是它不想做的,因为如果客户机直接调用另一个api,资源效率会高得多。客户有一个