以安全的方式将用户名和密码传递给服务器

时间:2018-06-28 02:17:54

标签: asp.net security

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

我的第一个问题:是否有可能通过黑客访问此未更改的密码? 第二个问题:如果答案是肯定的,那么是否有任何方法可以将密码发送到服务器而没有这种风险?

2 个答案:

答案 0 :(得分:1)

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

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

您可以为此编写代码,但总的来说,我发现在Web服务器(IIS)级别更易于处理。

答案 1 :(得分:1)

是的,可以。只需使用HTTPS。 Microsoft page

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;
    });            
}