Deze workshop laat zien hoe je veilig wachtwoorden van gebruikers kan encrypten (met BCrypt) en opslaan in een database.
Om de workshop eenvoudig te houden is er gebruik gemaakt van Entity Framework Core en SQLite.
- Clone deze repo:
git clone https://github.com/aaron5670/Workshop-Sensitive-Data-Exposure.git
- Configureer de working directory:
- In Solution Explorer, klik met de rechtermuisknop op het project "WebshopDemo" en selecteer Properties.
- Selecteer het Debug tab in het linkerdeelvenster.
- Stel Working directory in naar het project directory path. bv: C: \Users\john\visual-studio\Workshop-Sensitive-Data-Exposure\WebshopDemo.
- Sla de wijzigingen op.
- Open de Package Manager Console via Tools > NuGet Package Managet > Package Manager Console en voer
de volgende commands uit:
Add-Migration Initial
Update-Database
Deze workshop laat zien hoe je veilig gebruikerswachtwoorden kan opslaan in een database.
- Installeer de volgende NuGet: BCrypt.Net-Next (Link).
- Vervang de code in de AddCustomer methode met het volgende:
// Hash password // Default workFactor is 11 (2,048 iterations) var passwordHash = BCrypt.Net.BCrypt.HashPassword(password, 11); context.Customers.Add(new Customer { username = username, password = passwordHash, firstName = firstName, lastName = lastName, address = address });
- vervang het if-statement in de methode Authenticate met het volgende:
if (account == null || !BCrypt.Net.BCrypt.Verify(password, account.password))
{
// authentication failed
return false;
}
- Voor extra security kan je eventueel workFactor van BCrypt.Net.BCrypt.HashPassword(password, 11) verhogen.
- Extra informatie over BCrypt en de BCrypt.Net-Next NuGet die wordt gebruikt in deze workshop: BCrypt.net
- Extra informatie over A3 2017 - Sensitive Data Exposure: Link