Moin alle zusammen,
ich habe ein kleines Problem. Zur Zeit versuche ich in einem .NET Projekt einen password hash einzubauen da ich keine raw passwords in der Datenbank speichern will. Die Mechanik wie das geht verstehe ich schon aber sind da noch ein paar offene fragen.
1. Ich habe nun öfters gelesen das salt hashing gut sein soll und schlecht. Nun wollte ich euch mal dazu fragen?
2. Wenn ich eine hash generiere für jedes password individual wie muss dann die Validation beim login aussehen?
3. Wie genau würde man so was ein bauen in eine Registration page?
Ich poste mal meine code mit den ich zur zeit habe.
Das ist meine Page
Der Code
Ich dachte mir das ich im meiner Datenbank noch ein weiteres column anlegen muss um darin den hash für die passwords zu speicher und die werden dann benutzt bei dem login.
Wenn mir jemand weiter helfen kann wäre sehr nett oder ein Tutorial verlinken kann.
Vielen Dank für die Hilfe.
ich habe ein kleines Problem. Zur Zeit versuche ich in einem .NET Projekt einen password hash einzubauen da ich keine raw passwords in der Datenbank speichern will. Die Mechanik wie das geht verstehe ich schon aber sind da noch ein paar offene fragen.
1. Ich habe nun öfters gelesen das salt hashing gut sein soll und schlecht. Nun wollte ich euch mal dazu fragen?
2. Wenn ich eine hash generiere für jedes password individual wie muss dann die Validation beim login aussehen?
3. Wie genau würde man so was ein bauen in eine Registration page?
Ich poste mal meine code mit den ich zur zeit habe.
Das ist meine Page
Code:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Regestration.aspx.cs" Inherits="Regestratioon" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Regestration</title>
<style type="text/css">
.style1 {
width: 100%;
}
.style2
{
width: 120px;
}
.style3
{
width: 120px;
height: 26px;
}
.style4
{
height: 26px;
}
.style5
{
width: 204px;
}
.style6
{
height: 26px;
width: 204px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
Regestration Page
<table class="style1">
<tr>
<td class="style2">
UserName</td>
<td class="style5">
<asp:TextBox ID="TextBoxUN" runat="server" MaxLength="15" Width="180px"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBoxUN" ErrorMessage="Enter user name" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style3">
Password</td>
<td class="style6">
<asp:TextBox ID="TextBoxP" runat="server" MaxLength="15" Width="180px"
TextMode="Password"></asp:TextBox>
</td>
<td class="style4">
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBoxP" ErrorMessage="Enter pass" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style2">
Retype Password</td>
<td class="style5">
<asp:TextBox ID="TextBoxPS" runat="server" MaxLength="15" Width="180px"
TextMode="Password"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="TextBoxPS" ErrorMessage="enter pass" ForeColor="Red"></asp:RequiredFieldValidator>
<br />
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="Compare PW" ControlToCompare="TextBoxP"
ControlToValidate="TextBoxPS" ForeColor="Red"></asp:CompareValidator>
</td>
</tr>
<tr>
<td class="style2">
Email address</td>
<td class="style5">
<asp:TextBox ID="TextBoxEA" runat="server" Width="180px"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="TextBoxEA" ErrorMessage="email" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style2">
Full name</td>
<td class="style5">
<asp:TextBox ID="TextBoxFN" runat="server" Width="180px"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
ControlToValidate="TextBoxFN" ErrorMessage="name" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style2">
</td>
<td class="style5">
<asp:Button ID="Submit" runat="server" onclick="Submit_Click" Text="Submit" />
</td>
<td>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Der Code
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Security;
public partial class Regestratioon : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString);
con.Open();
string cmdStr = "select count(*) from Registratoin where USerName='" + TextBoxUN.Text + "'";
SqlCommand userExist = new SqlCommand(cmdStr, con);
int temp = Convert.ToInt32(userExist.ExecuteScalar().ToString());
if (temp == 1)
{
Response.Write("User name Already exist.... use a other user name plz");
}
}
protected void Submit_Click(object sender, EventArgs e)
{
SqlConnection con= new SqlConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString);
con.Open();
string insCmd = "Insert into Regestration (UserName, Password, email, FullName) values (@UserName, @Password, @email, @FullName)";
SqlCommand insertUser = new SqlCommand(insCmd, con);
insertUser.Parameters.AddWithValue("@UerName", TextBoxUN.Text);
insertUser.Parameters.AddWithValue("@Password", TextBoxP.Text);
insertUser.Parameters.AddWithValue("@email", TextBoxEA.Text);
insertUser.Parameters.AddWithValue("@FullName", TextBoxFN.Text);
try
{
insertUser.ExecuteNonQuery();
con.Close();
Response.Redirect("Login.aspx");
}
catch (Exception er)
{
Response.Write("End of the world plz try again!");
}
finally
{
//extensions that can be implemented here!!
}
}
}
Wenn mir jemand weiter helfen kann wäre sehr nett oder ein Tutorial verlinken kann.
Vielen Dank für die Hilfe.