如何为会话加密用户名/密码

时间:2019-11-27 08:43:07

标签: c# asp.net json httpwebrequest

我正在通过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);

1 个答案:

答案 0 :(得分:3)

@germi是正确的。这正是TLS / Https的目的。 可以看到您的https请求的内容并不意味着任何人都可以。

只要您的端点正在使用https(而不是http),交换将通过加密通道进行。如果要验证,请安装Wireshark并亲自查看。