在我的Web应用程序中,有一个注册页面,其中包含五个textbox
(用户名,密码,确认密码,电子邮件和确认电子邮件)和一个名为button
的register。据我所知,一个明智的建议是在保存到database
之前对密码进行哈希处理,但是对密码进行哈希处理是在服务器端进行的。密码正在发送(从客户端)到服务器,没有任何更改。
我的第一个问题:是否有可能通过黑客访问此未更改的密码? 第二个问题:如果答案是肯定的,那么是否有任何方法可以将密码发送到服务器而没有这种风险?
答案 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;
});
}