Hej Pellesoftare Att spara lösenorden i en web.configfil kan ses som något oortodoxt (så är dock inte fallet med mig) därför att det är så pass ovanligt. Att du har lösenorden krypterade med SHA1 kommer dessutom nästan rakt ur instruktionsboken (bra). Man tackar för tipsen Det er ingen enkel fråga du har sidan ingen funktion eller teknik kan sees isolert när det gjelder sikkerhet. Om du gjör Hash av lösenordet, så kombiner det med bruk av et "salt" värde. Om du inte kombinerer det med et salt värde, så kan många lösenord knäkkas ved hjelp av ordlista ("dictionary attacks"):Vad bör jag tänka på när det gäller inloggningssäk
Jag har en applikation där jag lagrar användarID o lösen i en WebConfigfil. Vad jag funderar på är vilka åtgärder man bör vidta för att uppnå acceptabel säkerhet. Lösenorden i filen är krypterade med SHA1 och länken till inloggningssidan är osynlig.
Informationen som ska skyddas är inte speciellt känslig men ska naturligtvis inte kommas åt av obehöriga......
Jag tänker exempelvis på om reguljära uttryck möjligen bör användas i textboxarna? I så fall vilka inmatningar ska dessa hindra?
Sniffningsrisk? Hur skyddar jag mig mot sånt?
Hur ska filen lagras på webbhotellet? osv
// SmykenSv: Vad bör jag tänka på när det gäller säkerheten
När det gäller sniffning så finns det bara en sak som gäller: https, dvs certifikat och grejer, eftersom du ju måste skicka lösen i klartext eller så måste användaren skriva in det i klartext i alla fall.
Vad gäller avsnittet kring regulgära uttryck i din fråga så måste jag säga att jag inte fattar vad du menar.. alls.
En gång i tiden så kom en vän till mig på att kringgå lösenord i klartext genom att ett javascript krypterade själva inehållet i textrutan innan formuläret skickades (och därigenom en snifning kan bli aktuell). Att skriva sitt eget krypto kanske inte är det lättaste men en enkel algoritm kan i alla fall hindra till viss del.
//Mikael.NETSv: Vad bör jag tänka på när det gäller säkerheten
Nja, vad jag menar med reguljära uttryck (jag kanske använder fel ord men jag har för mig att det heter så) är att hindra att någon skriver in speciella tecken i formulärfälten exempelvis asp eller asp.net-kod som kan sabba applikationen. Men jag vet inte om det behövs. Kanske nån pellesoftare som vet mer....
Det där med ett script som kodar inmatningen är värd att titta mer på...
// MickeSv: Vad bör jag tänka på när det gäller säkerheten
<code>
using System.Security.Cryptography;
//Generate salt value
public static string CreateSalt(int size)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
rng.GetBytes(buff);
return Convert.ToBase64String(buff);
}
public static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = Concat(pwd,salt);
string hashedPwd = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPwd,"SHA1");
return hashedPwd;
}
</code>
---------------
Når det gjelder frågan om egna krypto, så skulle inte jag skapa nån eget krypto - dom blir aldrig så bra som profesjonelle krypton. Det går rett så snabbt at hitta mönster i hemgjorda grejer vid hjelp av matematiske modeller eller egnade krypto analys verktyg. Det går ofte rett så snabbt even utan så avancerade verktyg til hands.
Om du har använding för säkerhet gjör det ordentlig - annars låt bli. Halv säkerhet gir bare en falsk säkerhetskänsla.
För utveckling av säkra lösninger i ASP.NET miljö, se följande länk samt ladda hem en pdf fil (608 sider) derifrån som diskuterer hur man gjör säkre och skalerbare lösninger:
"Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp
samt
Authentication in ASP.NET: .NET Security Guidance
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/authaspdotnet.asp
Annars vil jag rekommendera siten, Microsoft Patterns and Practices:
http://msdn.microsoft.com/practices