Jak ukládat citlivá data

7. dubna 2007 | Radek Kropík | Komentáře (0)


Pokud na svém webu ukládáte například do databáze nebo i jiného úložiště nějaká citlivá data, jako jsou uživatelská jména nebo hesla, jistě vás napadlo, v jakém formátu je nejlepší tato data ukládat. V základu existují dvě možnosti, jak tato citlivá data ukládat a my si je nyní představíme.

Plain-text

Toto je jedna z možností, jak citlivá data ukládat a já vám s klidným svědomím můžu jen doporučit, abyste ji nepoužívali, neboť tato metoda ukládání dat spočívá v tom, že citlivá data jsou ukládána v prosté textové formě a nejsou nijak šifrována. Z toho vyplívá jisté nebezpečí, že by například šikovný hacker mohl tato data získat a nebyl by pak pro něj problém si je snadno přečíst. A je známo, že mnoho uživatelů používá k různým službám na internetu stejné heslo, měl by tudíž onen hacker v podstatě přístup i k těmto službám.

Hashovaná data

Druhá možno je citlivá data hashovat. Je to jedna z možností, jak citlivá data zabezpečit. Pro hackera není totiž jednoduchou záležitostí z tohoto hashe zrekonstruovat zpět původní data. A pokud vám toho hashování přijde ještě málo, můžete navíc použít tzv. salt – tj. k citlivým datům se přidá ještě náhodně vytvořená posloupnost znaků a pak až se celek zahashuje. A jak se takovýto salted hash používá v ASP.NET aplikacích si ukážeme na následujícím jednoduchém příkladu.

Nejdříve si vytvoříme formulář s jedním textboxem, do kterého zadáme naše heslo, které se nám po stisknutí tlačítka zahashuje a vypíše na obrazovku v tomto zahashovaném tvaru. Navíc si necháme vypsat, jaká salt se při hashování použila a samozřejmě bude také použita při rekonstrukci hesla.

<%@ Page Language="C#" AutoEventWireup="true"
     CodeFile="Hash.aspx.cs" Inherits="Hash" %>
<!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>Používáme HASH</title>
</head>
<body>
  <form id="form1" runat="server">
     <div>
         Zadejte heslo k hashování:
         <asp:TextBox ID="textHeslo" runat="server" />
         <asp:Button ID="hashujText" runat="server"
           Text="Hashuj heslo" OnClick="hashujText_Click" />
          <br />
          Salt je:
          <asp:Label ID="lblSaltTxt" runat="server" /><br />
          Hashované heslo je:
          <asp:Label ID="lblHashTxt" runat="server" />
      </div>
  </form>
</body>
</html>

A samozřejmě musíme také vytvořit funkci, která nám salted hash vytvoří.

protected void hashujText_Click(object sender, EventArgs e)
 {
  //Načteme heslo
  string heslo = textHeslo.Text
  //Vytvoříme salt
  byte[] bSalt = new byte[5];
  new RNGCryptoServiceProvider().GetBytes(bSalt);
  string sSalt = Convert.ToBase64String(bSalt);
  //Spojíme text z formuláře se salt
  byte[] bText = Encoding.UTF8.GetBytes(heslo + sSalt);
  //Vytvoříme hash
  byte[] bHash = new SHA256Managed().ComputeHash(bText);
  string sHash = Convert.ToBase64String(bHash);
  //Vypíšeme hash a salt
  lblSaltTxt.Text = sSalt;
  lblHashTxt.Text = sHash;
 }

A nyní již stačí uložit například do databáze odděleně hashované heslo a salt, která k heslu patří. Pokud nyní například hacker získá hesla z naší databáze a nezíská k nim patřičnou salt, bude pro něj těžké, ne-li nemožné zpětně heslo dekódovat. A to je právě účel použití „saltování“ hashe.

Z našeho ukázkového příkladu je vidět, že na používání salted hashe na citlivá data, jako jsou například hesla, není nic složitého. Jistě touto technikou přispějete k vyšší bezpečnosti vaší webové aplikace a nezbývá, než jen její použití doporučit.

Tisk
 

Komentáře k článku

Počet komentářů: 0

Článek dosud nebyl komentován
Buďte první, kdo okomentuje tento článek!




V komentářích není povoleno HTML a bude před odesláním formuláře odstraněno. Všechny URL začínající na 'http://' a e-mailové adresy budou převedeny na odkazy. Nový odstavec můžete vytvořit stejně jako v textovém editoru pomocí klávesy Enter.
Redakce si vyhrazuje právo smazat příspěvky, které jsou vulgární nebo by mohly jakkoliv poškodit tento magazín! Nezapoměňte správně opsat kontrolní kód!




(nebude zveřejněn)




Kontrolní kód



 

Novinky v magazínu

26.11.08 - Komentáře
Jak jste si jistě všimli, vytvořili jsme pro vás inovované komentáře k článkům. Doufáme, že se vám nyní budou články snadněji a pohodlněji komentovat.

Ikonka pro Vás

Líbí se vám tento magazín a rádi byste ho nějak podpořili? Pokud máte své webové stránky, budeme vám vděčni, pokud si na ně přidáte naší ikonku.


Statistika



Partnerské weby


Reklama