0

在我的 Web 应用程序中,有一个注册页面,其中包含五个textbox (用户名、密码、确认密码、电子邮件和确认电子邮件)和一个button命名注册。据我所知,一个明智的建议是在保存之前对密码进行哈希处理database,但是对密码进行哈希处理是在服务器端完成的。密码正在发送到服务器(从客户端),没有任何更改。

我的第一个问题:有没有可能让黑客访问这个未更改的密码? 第二个问题:如果答案是肯定的,有没有办法在没有这种风险的情况下向服务器发送密码?

4

2 回答 2

1

这就是 https/tls(以前称为 ssl)的用途。

您需要确保登录页面只能通过 https 访问。任何仅限 http 的请求都应被拒绝或转发到 https 页面。此外,一旦您发布了登录令牌,无论采用何种形式,所有使用该令牌的页面都应该只允许使用 https。

您可以为此编写代码,但通常我发现在 Web 服务器 (IIS) 级别处理它更容易。

于 2018-06-28T02:22:55.230 回答
1

是的你可以。只需使用 HTTPS。 微软页面

Startup.cs中,使用UseHttpsRedirection

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc();
}

以下代码调用 AddHttpsRedirection 来配置中间件选项:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddHsts(options =>
    {
        options.Preload = true;
        options.IncludeSubDomains = true;
        options.MaxAge = TimeSpan.FromDays(60);
        options.ExcludedHosts.Add("example.com");
        options.ExcludedHosts.Add("www.example.com");
    });

    services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
        options.HttpsPort = 5001;
    });            
}
于 2018-06-28T02:23:28.643 回答