Co je to injekce JSON a jak tomu zabránit?
JSON (JavaScript Object Notation)je otevřený standardní formát pro výměnu dat používaný ke komunikaci mezi aplikacemi. JSON je podobný XML, ale snáze se čte než XML díky své velmi lehké povaze (malá velikost souboru).
JSON byl odvozen z JavaScriptu – programovacího jazyka webu a nejpopulárnějšího na světě. To z něj činí preferovaný formát pro výměnu dat na internetu. I když se velmi podobá doslovné syntaxi objektu JavaScriptu, lze jej použít nezávisle na JavaScriptu a mnoho programovacích prostředí má schopnost číst (analyzovat) a generovat JSON.
JSON existuje jako řetězec – užitečné, když chcete přenášet data přes síť. Pokud však chcete získat přístup k datům, je třeba jej převést na nativní objekt JavaScriptu. JavaScript poskytuje globální objekt JSON s dostupnými metodami pro převod nativního objektu na řetězec (serializace) a převod řetězce na nativní objekt (deserializace). Řetězec JSON může být uložen ve vlastním souboru – což je v podstatě pouze textový soubor s příponou .json a MIME typem aplikace/json – což je v podstatě rozšíření internetového e-mailového protokolu, který umožňuje jeho uživatelům vyměňovat si různé druhy dat, jako jsou obrázky, audio a video soubory přes internet.
Mnoho webových aplikací jej používá k ukládání důležitých informací a vzájemné komunikaci. JSON je při použití k ukládání dat často považován za data uložená v mezipaměti a může potenciálně obsahovat citlivé informace. JSON se často používá ve spojení s RESTful API a aplikace AJAX pro přenos citlivých informací, jako jsou ověřovací údaje, když se používají k odesílání zpráv.
Rozšířené používání JSON ve webových aplikacích z něj dělá cíl pro škodlivé aktivity. Samotný JSON nepředstavuje žádnou velkou hrozbu. Koneckonců, je to pouze formát pro výměnu dat. Skutečné obavy o bezpečnost u JSON vyvstávají ve způsobu, jakým se používá. Při zneužití se aplikace založené na JSON mohou stát zranitelnými vůči útokům, jako je únos JSON a vkládání JSON. Tento článek pojednává o všem o útocích injekcí JSON, včetně toho, jak je detekovat a předcházet jim.

Co je to JSON Injection Attack a jak to funguje?
Injekční útoky ve webových aplikacích jsou kybernetické útoky, které se snaží vložit škodlivý kód do aplikace a změnit její normální provádění. Injekční útoky mohou vést ke ztrátě dat, úpravě dat a odmítnutí služby. V důsledku toho je uvedena jako bezpečnostní riziko webové aplikace číslo jedna OWASP Top 10 .
Injekce JSON je typickým příkladem injekčního útoku, i když není tak běžná a nebezpečná jako jiná forma injekčního útoku, jako je např. SQL Injection . Sémantika dokumentů a výstupních zpráv JSON může být výrazně změněna, pokud aplikace vytvoří JSON z nedůvěryhodného nebo neověřeného vstupu. Útočník může využít mezeru k vložení škodlivých kódů, které mohou změnit normální provádění programu. V některých případech může injekce JSON vést k Cross-Site Scripting nebo Dynamické vyhodnocování kódu .
JSON byl tradičně analyzován pomocí funkce eval(), ale to je nejistá praxe. Jakýkoli kód, který používá eval() k deserializaci JSON na objekt JavaScriptu, je otevřený útokům vstřikování JSON.
Injekce JSON nastane, když:
- Data z nedůvěryhodného zdroje nejsou serverem dezinfikována a zapisována přímo do streamu JSON. To se nazývá injekce JSON na straně serveru.
- Data z nedůvěryhodného zdroje nejsou dezinfikována a analyzována přímo pomocí funkce JavaScript eval. To se nazývá injekce JSON na straně klienta.
Abychom demonstrovali, jak funguje útok injekce JSON na straně serveru, uvažujme webovou aplikaci, která přijímá zadání uživatelského jména a hesla od uživatelů bez dezinfekce. Data dodaná uživatelem (uživatelské jméno, heslo a typ účtu) jsou uložena na straně serveru jako řetězec JSON. Řetězec JSON je vytvořen pomocí jednoduchého zřetězení, jak je znázorněno v kódu níže:
|_+_|Protože aplikace nedezinfikuje vstupní data, rozhodl se uživatel se zlými úmysly připojit ke svému uživatelskému jménu neočekávaná data: |_+_|
V důsledku toho se výsledný řetězec JSON stane:
{ 'Účet':'uživatel