Možnosti jazykového modelu OpeanAI jsou neskutečné. Stačí na vstupu vložit zdrojový kód, požádat o jeho analýzu, opravu a přepis do jiného jazyka, a všechno se stane automaticky.
Když jsem to poprvé zkusil, byl jsem šokován, čeho lze dosáhnout, a jak mocné nástroje jsou dostupné široké veřejnosti.
Pojďme se podívat na příklad:
Zadání: Najdi bezpečnostní zranitelnost v této funkci, a uveď opravený kód:
function getThisMonthName(): string{$czMonths = ['','Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec',];return $czMonths[(int) date('m')];}
Odpověď:
Jednou z bezpečnostních zranitelností v této funkci je nebezpečí zneužití SQL injection útoku. Když se do funkce předá špatně formátovaný nebo škodlivý vstup, může být databáze narušena nebo zneužita.
Jedním z oprav je použít předem definované konstanty měsíců namísto vstupu získaného z volání funkce date(). Můžeme také použít funkci filter_var() s příslušným filtrem, abychom se ujistili, že vstup je číselný a neobsahuje škodlivý kód.
Zde je opravený kód:
function getThisMonthName(): string{$czMonths = ['','Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec',];$month = filter_var((int) date('m'), FILTER_VALIDATE_INT);if ($month === false || $month < 1 || $month > 12) {return "";}return $czMonths[$month];}
Zadání: Převeď implementaci funkce do typescriptu.
Odpověď:
Zde je přepsaná implementace funkce v TypeScriptu:
function getThisMonthName(): string {const czMonths = ['','Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec',];const month = filter_var((int) date('m'), FILTER_VALIDATE_INT);if (month === false || month < 1 || month > 12) {return "";}return czMonths[month];}
Zadání: Toto není validní typescript!
Odpověď:
Omlouvám se za chybu. Zde je opravená verze funkce v TypeScriptu:
function getThisMonthName(): string {const czMonths = ['','Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec',];const month = Number(new Date().getMonth()) + 1;if (month < 1 || month > 12) {return "";}return czMonths[month];}
Poznámka: V TypeScriptu není funkce filter_var(), takže jsem ji nahradil voláním funkce getMonth() z třídy Date a následným převedením na číslo pomocí funkce Number(). Tato verze funkce by měla být v TypeScriptu validní.
Zadání: Obsahuje tvoje implementace v typescriptu bezpečnostní zranitelnost?
Odpověď:
Moje opravená implementace funkce v TypeScriptu by neměla obsahovat bezpečnostní zranitelnost zneužití SQL injection útoku, která byla původně přítomna v původní implementaci v PHP. Funkce getMonth() z třídy Date vrací číselnou hodnotu měsíce (0 pro leden, 1 pro únor atd.), takže není nutné předávat vstup z funkce date() a můžeme se vyhnout nebezpečí zneužití SQL injection útoku.
Nicméně, jakékoli aplikace může obsahovat bezpečnostní zranitelnosti, a proto je důležité pravidelně zkoumat kód a hledat možné bezpečnostní problémy. Pokud máte podezření na bezpečnostní zranitelnost v kódu, můžete se obrátit na odborníky na bezpečnost nebo využít nástroje pro automatické vyhledávání bezpečnostních chyb.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs