Jako programátor nebo vývojář nelze důležitost vytváření zabezpečených aplikací přeceňovat.
Zabezpečení softwaru se zabývá řízením škodlivých útoků tím, že identifikuje potenciální zranitelná místa v softwaru a přijímá nezbytná preventivní opatření k jejich ochraně.
Software nikdy nemůže být stoprocentně bezpečný, protože vývojář může chybu přehlédnout, vytvořit nové chyby ve snaze opravit existující případy nebo vytvořit nové chyby zabezpečení prostřednictvím aktualizací.
Existují však dva klíčové postupy, které mohou všichni vývojáři softwaru využít, aby zajistili, že vytvoří zabezpečený softwarový zabezpečený kód na prvním místě a efektivně otestují váš kód.
Jak napsat bezpečný kód
Psaní zabezpečeného kódu spadá pod jednu věc s chybovým zpracováním. Pokud můžete předvídat každou potenciální hodnotu, kterou by uživatel mohl vaši aplikaci nakrmit, a vytvořit ve svém programu odpověď na tuto hodnotu, píšete zabezpečený kód.
To je mnohem jednodušší, než si možná myslíte, protože všichni dobří vývojáři vědí téměř vše o aplikacích, které vyvíjejí. Proto byste měli znát každou hodnotu, kterou vaše aplikace vyžaduje k provedení úkolu (schválené hodnoty), a pochopit, že každá další možná hodnota, která existuje, je hodnota neschválená.
Psaní zabezpečeného kódu
Řekněme, že chcete vytvořit program, který od uživatele přijme pouze dvě celočíselné hodnoty a provede s nimi operaci přidání. S touto jedinou větou, jako dobrý vývojář, nyní víte vše o své aplikaci. Znáte všechny hodnoty, které tento program přijme (celočíselné hodnoty), a znáte úkol, který tento program dokončí (operace přidání).
Vytvoření programu v Javě Příklad
importovat java.util. Skener;
public class Main {
// Hlavní funkce, která provádí program a shromažďuje dvě hodnoty
public static void main (String [] args) {
System.out.println ("Zadejte prosím své dvě celočíselné hodnoty:");
int hodnota1;
int hodnota2;
Vstup do skeneru = nový skener (System.in);
hodnota1 = input.nextInt ();
hodnota2 = input.nextInt ();
přidání (hodnota1, hodnota2);
input.close ();
}
// funkce, která sbírá dvě hodnoty a zobrazuje jejich součet
přidání soukromého statického prázdnoty (int hodnota1, int hodnota2) {
int součet;
součet = hodnota1 + hodnota2;
System.out.println ("Součet dvou celočíselných hodnot, které jste zadali:" + součet);
}
}
Výše uvedený kód vytvoří aplikaci, která přesně odpovídá požadavkům. Při spuštění vytvoří v konzole následující řádek:
Zadejte své dvě celočíselné hodnoty:
Aplikace pak zůstane pozastavená, dokud uživatel nezadá do konzoly dvě celočíselné hodnoty (to znamená, že napíšete první hodnotu, stisknete klávesu Enter a opakujete).
Pokud uživatel zadá hodnoty 5 a 4 v konzole program vyprodukuje následující výstup:
Součet dvou celočíselných hodnot, které jste zadali: 9
To je skvělé; program dělá přesně to, co má dělat. Pokud však přijde hanebný uživatel a do vaší aplikace zadá neceločíselnou hodnotu, například „g“, nastanou problémy. Je to proto, že žádný kód v aplikaci nechrání před neschválenými hodnotami.
V tomto okamžiku vaše aplikace spadne a vytvoří potenciální bránu do vaší aplikace pro hackera, který přesně ví, co dělat dál.
Příklad zabezpečení vašeho programu
importovat java.util. InputMismatchException;
importovat java.util. Skener;
public class Main {
// Hlavní funkce, která provádí program a shromažďuje dvě hodnoty
public static void main (String [] args) {
Snaž se {
System.out.println ("Zadejte prosím své dvě celočíselné hodnoty:");
int hodnota1;
int hodnota2;
// použití třídy skeneru ke čtení každého vstupu od uživatele,
// a přiřadit jej k příslušné proměnné (vyvolá výjimku, pokud hodnoty nejsou celá čísla)
Vstup do skeneru = nový skener (System.in);
hodnota1 = input.nextInt ();
hodnota2 = input.nextInt ();
// zavolá funkci sčítání a předá jí dvě hodnoty
přidání (hodnota1, hodnota2);
// zavře vstupní proud poté, co skončí jeho používání
input.close ();
// zpracovat všechny chyby vyvolané v bloku try
} catch (InputMismatchException e) {
System.out.println ("Zadejte prosím platnou celočíselnou hodnotu.");
} úlovek (výjimka e) {
System.out.println (e.getMessage ());
}
}
// funkce, která sbírá dvě hodnoty a zobrazuje jejich součet
přidání soukromého statického prázdnoty (int hodnota1, int hodnota2) {
int součet;
součet = hodnota1 + hodnota2;
System.out.println ("Součet dvou celočíselných hodnot, které jste zadali:" + součet);
}
}
Výše uvedený kód je zabezpečený, protože provádí zpracování výjimek. Pokud tedy zadáte nečíselnou hodnotu, program se správně ukončí a vytvoří následující řádek kódu:
Zadejte platnou celočíselnou hodnotu.
Co je zpracování výjimek?
Zpracování výjimek je v zásadě moderní verze zpracování chyb, kde oddělujete kód pro zpracování chyb od normálního kódu pro zpracování. Ve výše uvedeném příkladu je veškerý normální kód zpracování (nebo kód, který může potenciálně vyvolat výjimku) v rámci Snaž se blok a veškerý kód pro zpracování chyb je uvnitř chytit bloky.
Pokud se blíže podíváte na výše uvedený příklad, zjistíte, že existují dva bloky úlovků. První bere InputMismatchException argument; toto je název výjimky, která je vyvolána, pokud je zadána neceločíselná hodnota. Druhý trvá Výjimka argument, a to je důležité, protože jeho účelem je zachytit jakoukoli výjimku v kódu, kterou vývojář během testování nenašel.
Příbuzný: Výjimky Java: Zacházíte s nimi správně?
Testování kódu
Před zabalením byste nikdy neměli podceňovat sílu testování a opakovaného testování kódu. Mnoho vývojářů (a uživatelů jejich aplikací) najde nové chyby poté, co je software k dispozici veřejnosti.
Důkladné testování vašeho kódu zajistí, že budete vědět, co vaše aplikace bude dělat za všech možných scénářů, a to vám umožní chránit vaši aplikaci před narušeními dat.
Příbuzný: Jak přistát s vaší první úlohou testování softwaru
Zvažte výše uvedený příklad. Co když po dokončení aplikaci otestujete pouze s celočíselnými hodnotami? Pokud to tak není, můžete odejít od aplikace v domnění, že jste úspěšně identifikovali všechny potenciální chyby.
Faktem je, že možná nebudete schopni identifikovat všechny potenciální chyby; to je důvod, proč zpracování chyb funguje ruku v ruce s testováním vašeho kódu. Testování výše uvedeného programu ukazuje, že v konkrétním scénáři dojde k jedné potenciální chybě.
Pokud však existuje nějaká jiná chyba, která se během testování neobjevila, druhý úlovek v kódu výše to vyřeší.
Zabezpečení vaší databáze
Pokud se vaše aplikace připojuje k databázi, nejlepším způsobem, jak zabránit přístupu k této databázi, je zajistit, aby všechny aspekty vaší aplikace byly zabezpečené. Co když je však vaše aplikace navržena s jediným účelem - poskytnout rozhraní k uvedené databázi?
To je místo, kde se věci stávají trochu zajímavějšími. V nejzákladnější podobě umožňuje databáze uživateli přidávat, načítat, aktualizovat a mazat data. Systém správy databáze je aplikace, která umožňuje uživateli přímo komunikovat s databází.
Většina databází obsahuje citlivá data, proto k zachování integrity a omezení přístupu k těmto datům existuje jedna kontrola přístupu.
Řízení přístupu
Řízení přístupu se snaží zachovat integritu databáze definováním typu lidí, kteří mají přístup k databázi, a omezením typu přístupu, který mají. Dobrý systém pro správu databáze by proto měl být schopen zaznamenávat, kdo do databáze přistupuje, v jaké době a co udělal.
Rovněž by mělo být možné zabránit registrovanému uživateli v přístupu nebo úpravě dat, s nimiž nemá oprávnění komunikovat.
Zabezpečení softwaru je klíčovou dovedností pro všechny vývojáře
Vývoj dobrého softwaru je synonymem pro zajištění toho, aby váš software vydržel jakýkoli škodlivý útok. Toho lze dosáhnout pouze napsáním zabezpečeného kódu, neustálým testováním aplikace a udržováním kontroly nad tím, kdo má přístup k vašim datům.
Nyní, když víte, jak zabezpečit software, možná budete chtít dozvědět se o některých krocích vývoje softwaru.
Připravujete se na kódování svého prvního programu? Postupujte podle těchto klíčových kroků při vývoji softwaru.
Přečtěte si další
- Programování
- Kybernetická bezpečnost
- Tipy pro kódování
Kadeisha Kean je vývojář softwaru a technický a technologický autor. Má výraznou schopnost zjednodušit některé z nejsložitějších technologických konceptů; výroba materiálu, kterému snadno porozumí každý technologický nováček. Nadšeně se věnuje psaní, vývoji zajímavého softwaru a cestování po světě (prostřednictvím dokumentů).
Přihlaste se k odběru našeho zpravodaje
Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!
Ještě jeden krok…!
V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.