我正在通过https(使用HttpWebRequest
调用第三方服务,并发送用户名和密码,以返回令牌,然后需要该令牌以后发出请求数据)。该服务仅需要在公共ASPNet网站上列出项目。
不涉及任何数据库,因此会话或cookie将存储令牌。
要获取令牌,我发送了一个包含用户名/密码的POST请求,但我可以在Fiddler(标题文本选项卡中看到这些详细信息(用户名/密码),但可以确认是否有人问)-我个人认为我不应该不是吗当我发出GET请求以获取物品时,我会发送令牌和所有作品。
那么我应该在获取令牌之前以某种方式加密用户名/密码吗?如果是,我该怎么做?
我只是觉得任何人都可以检查POST请求并查看发生了什么。我可能是错的,但很乐意测试任何理论。
编辑1
这是我发送POST请求的代码。请注意用户名和密码以及URL,网址为https
private string UsernamePassword()
{
string un = new JavaScriptSerializer().Serialize(new
{
User = "abc",
Password = "123"
});
return un;
}
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("https://site.data.com");
wr.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br");
wr.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-GB,en-US;q=0.9,en;q=0.8");
wr.Headers.Add("Sec-Fetch-Site", "same-origin");
wr.Headers.Add("Sec-Fetch-Mode", "cors");
wr.Accept = "application/json";
wr.ContentType = "application/json";
byte[] data = null;
wr.Method = "POST";
data = Encoding.UTF8.GetBytes(UsernamePassword());
wr.ContentLength = data.Length;
wr.KeepAlive = true;
wr.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
try
{
using (Stream stream = wr.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Flush();
stream.Close();
}
using (HttpWebResponse httpResponse = (HttpWebResponse)wr.GetResponse())
{
var encoding = Encoding.GetEncoding(httpResponse.CharacterSet);