C# 我是否需要对所有请求头进行base64编码?

C# 我是否需要对所有请求头进行base64编码?,c#,asp.net-web-api,C#,Asp.net Web Api,我正在编写一个C#Web API。现在我正在进行身份验证。每个请求都将通过SSL完成,并要求用户通过SSL发出请求 我想知道的是,在请求数据或进行身份验证时,是否需要让用户发送Base64编码的字符串。事情会是这样的 登录方法控制器: Public bool Login (User user) 其中,用户包括: {“用户名”:“克里斯”,“密码”:“小狗”} 在这种情况下,在请求头中对chi和doggie进行Base64编码是否总是最好的?还是没有必要?我是否需要在所有请求中发送base 64

我正在编写一个C#Web API。现在我正在进行身份验证。每个请求都将通过SSL完成,并要求用户通过SSL发出请求

我想知道的是,在请求数据或进行身份验证时,是否需要让用户发送Base64编码的字符串。事情会是这样的

登录方法控制器:

Public bool Login (User user)
其中,用户包括:

{“用户名”:“克里斯”,“密码”:“小狗”}


在这种情况下,在请求头中对chi和doggie进行Base64编码是否总是最好的?还是没有必要?我是否需要在所有请求中发送base 64编码的字符串?

在安全性方面,只要您使用SSL,这实际上没有任何区别

但是,如果所有请求都需要发送用户名和密码,那么将这些信息抽象到
授权
头中,以便将其与实际请求负载分离,会更有意义

如果决定使用基本身份验证,则需要在授权标头中将用户名和密码作为Base64编码字符串发送。在本例中,授权标头的外观如下:

Authorization: Basic Y2hyaXM6ZG9nZ2ll

我可能弄错了,但通过阅读您的问题,我感觉您认为Base64实际上保护了错误的用户名和密码。Base64是可逆的,因此它绝不用于任何安全性。这只是在HTTP请求中发送正确编码的二进制数据的一种方便方式。

据我所知,Base64编码不是出于安全目的,而是为了传输数据?基本上是这样,请求中没有HTTP无法处理的字符?您的理解完全正确。但是,如果使用JSON序列化程序对JSON请求有效负载进行正确编码,则不需要任何Base64。您可以更安全地在请求体中发送正确编码的JSON字符串,而不会违反或破坏协议。Ok sweet。我试图完成的是创建一个用于用户管理和身份验证的Web Api。因此,对于登录,它将是一个POST-to/api/Account/Login。我写作的目的是接收帖子请求并对其进行解释。我已经需要SSL,并且只假设请求中发送的Json编码正确。