Jak ukládat citlivá data

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

Tisk

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.


Radek Kropík
 


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, slouží k načtení Gravataru)






Kontrolní kód



 

Novinky v magazínu

9.02.10 - Vaše články
Nenašli jste v magazínu článek o něčem, co vás skutečně zajímá? Není nic jednoduššího, než nám napsat váš návrh. Pokud nás váš návrh o čem napsat opravdu zaujme, může se brzy v magazínu objevit článek právě na vámi navrhnuté téma.

Vyhledávání




Info e-mailem




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