在我的 Web 应用程序中,有一个注册页面,其中包含五个textbox (用户名、密码、确认密码、电子邮件和确认电子邮件)和一个button命名注册。据我所知,一个明智的建议是在保存之前对密码进行哈希处理database,但是对密码进行哈希处理是在服务器端完成的。密码正在发送到服务器(从客户端),没有任何更改。
我的第一个问题:有没有可能让黑客访问这个未更改的密码? 第二个问题:如果答案是肯定的,有没有办法在没有这种风险的情况下向服务器发送密码?
这就是 https/tls(以前称为 ssl)的用途。
您需要确保登录页面只能通过 https 访问。任何仅限 http 的请求都应被拒绝或转发到 https 页面。此外,一旦您发布了登录令牌,无论采用何种形式,所有使用该令牌的页面都应该只允许使用 https。
您可以为此编写代码,但通常我发现在 Web 服务器 (IIS) 级别处理它更容易。
是的你可以。只需使用 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;
});
}