如何处理以下HTTP 303上的标头
我试图确定当客户机从服务器接收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。我还没有找到让这些工具删除标题的方法 在我所描述的情况下
授权
头
问题是:客户端向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
trustedotherserver.com
来处理您的令牌。它也可以在后台发送令牌。从客户端的角度来看,客户端信任myserver.com
来处理令牌、安全地存储和验证令牌等。如果myserver.com
决定将令牌发送到otherserver.com
,客户端是否应覆盖该令牌?在这种情况下,当然可以,但总的来说,我认为不应该
由于攻击者无法控制合法资源
myserver.com
中的响应头,我认为通常情况下,默认情况下将令牌发送到它指定的另一台服务器是安全的,除非您有充分的理由不这样做(比如客户端上的显式策略).您可以争辩说,当使用otherserver.com
的位置发送303时,myserver.com
trustedotherserver.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,资源效率会高得多。客户有一个