<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://christianpedia.com/index.php?action=history&amp;feed=atom&amp;title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch</id>
	<title>Jak se bránit SQL injection ve webových aplikacích - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://christianpedia.com/index.php?action=history&amp;feed=atom&amp;title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch"/>
	<link rel="alternate" type="text/html" href="http://christianpedia.com/index.php?title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch&amp;action=history"/>
	<updated>2026-08-30T22:10:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://christianpedia.com/index.php?title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch&amp;diff=77348&amp;oldid=prev</id>
		<title>168.228.45.164 at 21:23, 21 August 2026</title>
		<link rel="alternate" type="text/html" href="http://christianpedia.com/index.php?title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch&amp;diff=77348&amp;oldid=prev"/>
		<updated>2026-08-21T21:23:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:23, 21 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Praktické kroky: od záměru k licenci Začněte tím, že si sepíšete, jaké použití chcete povolit &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jaké zakázat&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Například &lt;/del&gt;pokud &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyvíjíte serverovou aplikaci&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zvažte AGPL&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;která pokrývá i síťové nasazení&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;U knihoven&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které mají sloužit jako stavební bloky v jiných projektech, je vhodnější LGPL – ta umožňuje dynamické linkování bez povinnosti šířit celý projekt&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro malé nástroje a skripty postačí permisivní licence, která eliminuje právní tahanice&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vždy si přečtěte plné znění licence, ne jen shrnutí&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pozor na to, že některé licence nejsou kompatibilní – sloučení kódu pod GPL a Apache může být problematické&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dalším krokem je správné označení projektu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Do kořenového adresáře uložte soubor s textem licence (např&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LICENSE&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;COPYING) &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;do každého zdrojového souboru přidejte hlavičku &lt;/del&gt;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;copyrightem a odkazem na licenci&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;To není jen formalita: bez toho nemáte důkaz&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že jste autorem&lt;/del&gt;, a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uživatelé nemusí vědět&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;za jakých podmínek kód &lt;/del&gt;používají. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud používáte cizí kód&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ověřte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že jeho licence &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kompatibilní s vaší. Typická chyba je převzít kód z internetu bez kontroly a pak zjistit&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že ho nemůžete šířit pod svou licencí&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Praktickým tipem &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;také použití whitelistů pro vstupy&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které mají omezený rozsah &lt;/del&gt;hodnot, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jako jsou čísla stavů&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;identifikátory nebo výčtové typy&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro textové &lt;/del&gt;vstupy, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde potřebujete zachovat formátování, použijte vrstvu pro escapování výstupu, nikoliv pro vstup&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pamatujte&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SQL injection se nevyhýbá ani JSON API, GraphQL dotazům nebo noSQL databázím, i když tam jsou principy trochu odlišné. Vždy proto testujte své aplikace nástroji &lt;/del&gt;pro &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dynamickou analýzu zranitelností a pravidelně provádějte penetrační testy&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nakonec &lt;/del&gt;si &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozmyslete, jak chcete projekt rozvíjet&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud očekáváte příspěvky od komunity&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zvolte licenci&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kterou znají a které důvěřují (např. MIT &lt;/del&gt;nebo &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GPL)&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud chcete mít možnost později změnit licenci, vyžaduje to souhlas všech přispěvatelů – proto &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dobré si od začátku vyžádat podepsání contributor agreement&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nebo &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tomu vyhnete tím&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že si vyberete licenci&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;u níž víte, že ji nebudete chtít měnit. Dobře zvážené rozhodnutí &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;začátku vám ušetří spoustu nepříjemností ve chvíli, kdy projekt začne být používán ve větším měřítku&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Refaktorování kódu patří mezi činnosti&lt;/del&gt;, které &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mnozí vývojáři odkládají&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;obávají zdlouhavých ručních úprav&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Moderní vývojová prostředí však nabízejí sadu nástrojů&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které dokážou běžné &lt;/del&gt;operace &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;urychlit natolik&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že se z refaktorování stane rutinní záležitost. Nemusíte instalovat žádné doplňky &lt;/del&gt;– &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stačí využít to&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co už ve svém IDE máte&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Prvním krokem &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vždy &lt;/del&gt;použití &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;parametrizovaných dotazů&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ať už pracujete s jakýmkoliv jazykem či frameworkem&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo skládání řetězce&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde uživatelský vstup přímo vkládáte do &lt;/del&gt;SQL &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;příkazu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;předáte dotaz jako šablonu s placeholdery a hodnoty dodáte zvlášť&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Databázový ovladač se pak postará o jejich bezpečné zakódování&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tento přístup funguje v PHP &lt;/del&gt;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PDO, v Pythonu &lt;/del&gt;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;psycopg2&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v Javě s PreparedStatement a podobně&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud používáte ORM, mějte &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;paměti&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i tam lze napsat nebezpečný „raw&quot; &lt;/del&gt;dotaz &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;– vždy preferujte vestavěné metody&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Při výběru berte &lt;/del&gt;v &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;potaz velikost týmu a čas &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vývoj&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GraphQL se nevyplácí u malých projektů &lt;/del&gt;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;úzkou doménou&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde by bylo schéma zbytečně složité&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;REST &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tu rychlejší a přehlednější&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Naopak pokud víte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že budete API rozšiřovat &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;klienti &lt;/del&gt;si &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;budou žádat stále nové kombinace dat, GraphQL vám ušetří nekonečné přidávání endpointů. Typický kompromis: použijte REST pro veřejné API &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GraphQL pro interní služby. Tím získáte to nejlepší z obou světů&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zavedením těchto opatření &lt;/del&gt;– &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;parametrizované dotazy, minimální práva, skryté chyby, whitelisty &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pravidelné testování – snížíte riziko SQL injection na minimum&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Neexistuje univerzální stříbrný náboj, ale kombinace technik vás ochrání před drtivou většinou útoků&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Důležité &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;začít hned u nových projektů a postupně opravit i ty staré&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde se chyby často vyskytují&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Než začnete šířit svůj kód&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zastavte se u výběru licence&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Není to formalita, ale právní rámec, který určí, co s vaším dílem smí ostatní dělat&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Špatná volba může odradit potenciální přispěvatele, nebo naopak umožnit komerční zneužití&lt;/del&gt;, které &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jste nezamýšleli&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Základní otázka zní: Chcete, aby vaše knihovna zůstala vždy otevřená, nebo vám nevadí, že ji někdo začlení do uzavřeného produktu?&lt;/del&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Na závěr si shrňte&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;správné verzování není &lt;/del&gt;o &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;počtu verzí&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale o jasných pravidlech &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;automatech&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nastavte &lt;/del&gt;si &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jednoduchý workflow&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který každý člen týmu pochopí: změna v knihovně vede k zvýšení verze&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aktualizaci manifestu a záznamu do changelogu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vše kontrolujte v CI&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tím se vyhnete nejistotě&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;která verze je aktuální, a projekt zůstane stabilní i při mnoha knihovnách&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vyhněte se improvisaci a spoléhání na paměť – jediným zdrojem pravdy je verzovací soubor&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který musí být vždy aktuální&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kromě testů využijte i nástroj pro automatizaci – kolekce runner. Spustíte celou kolekci najednou a sledujete výsledky. To se hodí při regresním testování po změně API. Runner umožňuje nastavit počet opakování &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpoždění mezi požadavky&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nezapomeňte na proměnné – &lt;/ins&gt;pokud &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testujete sekvenci požadavků&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde jeden závisí na odpovědi předchozího&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;použijte skripty v sekci Tests pro uložení hodnoty do proměnné. Příklad: pm.environment&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;set(&quot;token&quot;&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pm&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;response&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;json()&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;token)&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Při testování na reálných zařízeních se zaměřte na spotřebu baterie a přehřívání&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;To jsou aspekty, které automatizované testy na emulátoru neodhalí&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mějte po ruce několik fyzických zařízení&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to jak &lt;/ins&gt;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;operačním systémem od jednoho výrobce, tak i od jiného, protože každý systém má svá specifika&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro uživatelské testování oslovte lidi&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kteří aplikaci neznají&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sledujte&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jak ji &lt;/ins&gt;používají. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Často zjistíte&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že to&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pro vás intuitivní&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uživatelé dělají úplně jinak&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Časté chyby a jak je odstranit Jednou z typických chyb &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dynamické sestavování dotazů pomocí řetězců, zejména když potřebujete řadit podle sloupce zvoleného uživatelem. Pokud uživatel může ovlivnit název sloupce nebo směr řazení&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;parametrizace nepomůže. V takovém případě vždy použijte seznam povolených &lt;/ins&gt;hodnot, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který ověří&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že zadaný řetězec odpovídá skutečnému názvu sloupce&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Druhou častou chybou je zapomínání na &lt;/ins&gt;vstupy &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vstupující do LIKE&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IN nebo ORDER BY klauzulí&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I zde platí&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;místo přímého vkládání vstupu použijte placeholder a &lt;/ins&gt;pro &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dynamické části aplikujte whitelist&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte tím, že &lt;/ins&gt;si &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pečlivě naplánujete testovací scénáře&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nezapomeňte na okrajové případy&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jako je přerušení připojení&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;příchod notifikace &lt;/ins&gt;nebo &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;volání během používání aplikace&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typickou chybou &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testovat pouze na nejnovějším zařízení s nejnovější verzí systému&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V praxi &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale většina uživatelů pohybuje na starších modelech&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a proto je důležité mít k dispozici zařízení s různými verzemi operačního systému&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nebo využít cloudové služby pro testování &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vzdálených zařízeních&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NoSQL není jeden nástroj, ale rodina databází&lt;/ins&gt;, které &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se liší datovým modelem. Existují dokumentové (JSON), sloupcové&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;klíč-hodnota a grafové. Každý typ řeší jiné problémy. Dokumentové databáze &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hodí pro obsahově heterogenní záznamy, které byste v SQL řetězili přes deset JOINů&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Sloupcové jsou vhodné pro analytiku nad obrovskými tabulkami&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde čtete jen vybrané sloupce. Klíč-hodnota je extrémně rychlá pro jednoduché &lt;/ins&gt;operace, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a grafové databáze zase skvěle modelují vztahy &lt;/ins&gt;– &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;typicky sociální sítě&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;doporučovací systémy nebo řízení práv&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Častým omylem &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;domněnka, že NoSQL je automaticky rychlejší. Rychlost závisí na případu &lt;/ins&gt;použití &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a na tom&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jak dobře je datový model navržený&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vezměte si příklad streamování událostí – logy&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;telemetrie. Sloupcová databáze je pro zápis mnohem rychlejší než klasická &lt;/ins&gt;SQL, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale pokud potřebujete dotazovat se podle vztahů mezi entitami, budete psát složité agregační operace, které v SQL zvládnete jedním JOINem&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Také si dejte pozor na to, jak NoSQL řeší rozšiřování&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Většina z nich podporuje horizontální škálování – přidávání dalších uzlů – ale to &lt;/ins&gt;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sebou nese problémy &lt;/ins&gt;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;distribucí dat&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;např&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozdělení &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;shardy. Bez promyšlené distribuční strategie vám může docházet k tomu&lt;/ins&gt;, že dotaz &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;musí prohledat všechny uzly, což je pomalé a nákladné&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mezi nejčastější chyby patří zapomenutí na hlavičky, nesprávný formát těla požadavku nebo neuvědomění si rozdílu mezi GET a POST. U POST vždy nastavte hlavičku Content-Type na application/json a tělo zadejte &lt;/ins&gt;v &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;surovém formátu. Dále pozor &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;citlivé údaje – nikdy neukládejte hesla do proměnných, které sdílíte s týmem&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro citlivá data použijte proměnné &lt;/ins&gt;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hodnotami&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které se nenačítají ze souboru&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Postman &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mocný nástroj, ale vyžaduje disciplínu&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud se naučíte strukturovat kolekce&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používat proměnné &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;psát smysluplné testy, ušetříte &lt;/ins&gt;si &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;spoustu času &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;předejdete chybám v produkci&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Proměnné a prostředí &lt;/ins&gt;– &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;klíč k efektivnímu testování Pevně zadané adresy &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hodnoty brzy znepřehlední práci&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Proto používejte proměnné&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V Postmanu &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;definujete buď globálně&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nebo v rámci prostředí&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Prostředí představuje sadu proměnných pro konkrétní prostředí – testovací&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;produkční&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Adresu pak zapíšete jako baseUrl a hodnotu přiřadíte v nastavení&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Stejně postupujte u přihlašovacích tokenů&lt;/ins&gt;, které &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se mění při každém běhu testu&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Scrum není o tom&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;budete dělat víc věcí za kratší dobu. Je &lt;/ins&gt;o &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tom&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že budete dělat ty správné věci &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;budete mít zpětnou vazbu dřív&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro české týmy je klíčové, aby &lt;/ins&gt;si &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ujasnily role&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;definici hotového a hlavně aby se nebály říct managementu&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že něco nestihnou&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte malým pilotním projektem, ne celou organizací&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Až uvidíte první výsledky&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozšiřte působnost&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Jinak skončíte s byrokratickým monstrem&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které nemá s agilitou nic společného&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>168.228.45.164</name></author>
	</entry>
	<entry>
		<id>http://christianpedia.com/index.php?title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch&amp;diff=77167&amp;oldid=prev</id>
		<title>LinneaFarrington: Created page with &quot;Praktické kroky: od záměru k licenci Začněte tím, že si sepíšete, jaké použití chcete povolit a jaké zakázat. Například pokud vyvíjíte serverovou aplikaci, zvažte AGPL, která pokrývá i síťové nasazení. U knihoven, které mají sloužit jako stavební bloky v jiných projektech, je vhodnější LGPL – ta umožňuje dynamické linkování bez povinnosti šířit celý projekt. Pro malé nástroje a skripty postačí permisivní licence, která e...&quot;</title>
		<link rel="alternate" type="text/html" href="http://christianpedia.com/index.php?title=Jak_se_br%C3%A1nit_SQL_injection_ve_webov%C3%BDch_aplikac%C3%ADch&amp;diff=77167&amp;oldid=prev"/>
		<updated>2026-08-21T17:31:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Praktické kroky: od záměru k licenci Začněte tím, že si sepíšete, jaké použití chcete povolit a jaké zakázat. Například pokud vyvíjíte serverovou aplikaci, zvažte AGPL, která pokrývá i síťové nasazení. U knihoven, které mají sloužit jako stavební bloky v jiných projektech, je vhodnější LGPL – ta umožňuje dynamické linkování bez povinnosti šířit celý projekt. Pro malé nástroje a skripty postačí permisivní licence, která e...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Praktické kroky: od záměru k licenci Začněte tím, že si sepíšete, jaké použití chcete povolit a jaké zakázat. Například pokud vyvíjíte serverovou aplikaci, zvažte AGPL, která pokrývá i síťové nasazení. U knihoven, které mají sloužit jako stavební bloky v jiných projektech, je vhodnější LGPL – ta umožňuje dynamické linkování bez povinnosti šířit celý projekt. Pro malé nástroje a skripty postačí permisivní licence, která eliminuje právní tahanice. Vždy si přečtěte plné znění licence, ne jen shrnutí. Pozor na to, že některé licence nejsou kompatibilní – sloučení kódu pod GPL a Apache může být problematické.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Dalším krokem je správné označení projektu. Do kořenového adresáře uložte soubor s textem licence (např. LICENSE, COPYING) a do každého zdrojového souboru přidejte hlavičku s copyrightem a odkazem na licenci. To není jen formalita: bez toho nemáte důkaz, že jste autorem, a uživatelé nemusí vědět, za jakých podmínek kód používají. Pokud používáte cizí kód, ověřte, že jeho licence je kompatibilní s vaší. Typická chyba je převzít kód z internetu bez kontroly a pak zjistit, že ho nemůžete šířit pod svou licencí.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Praktickým tipem je také použití whitelistů pro vstupy, které mají omezený rozsah hodnot, jako jsou čísla stavů, identifikátory nebo výčtové typy. Pro textové vstupy, kde potřebujete zachovat formátování, použijte vrstvu pro escapování výstupu, nikoliv pro vstup. Pamatujte, že SQL injection se nevyhýbá ani JSON API, GraphQL dotazům nebo noSQL databázím, i když tam jsou principy trochu odlišné. Vždy proto testujte své aplikace nástroji pro dynamickou analýzu zranitelností a pravidelně provádějte penetrační testy.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nakonec si rozmyslete, jak chcete projekt rozvíjet. Pokud očekáváte příspěvky od komunity, zvolte licenci, kterou znají a které důvěřují (např. MIT nebo GPL). Pokud chcete mít možnost později změnit licenci, vyžaduje to souhlas všech přispěvatelů – proto je dobré si od začátku vyžádat podepsání contributor agreement. Nebo se tomu vyhnete tím, že si vyberete licenci, u níž víte, že ji nebudete chtít měnit. Dobře zvážené rozhodnutí na začátku vám ušetří spoustu nepříjemností ve chvíli, kdy projekt začne být používán ve větším měřítku.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Refaktorování kódu patří mezi činnosti, které mnozí vývojáři odkládají, protože se obávají zdlouhavých ručních úprav. Moderní vývojová prostředí však nabízejí sadu nástrojů, které dokážou běžné operace urychlit natolik, že se z refaktorování stane rutinní záležitost. Nemusíte instalovat žádné doplňky – stačí využít to, co už ve svém IDE máte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Prvním krokem je vždy použití parametrizovaných dotazů, ať už pracujete s jakýmkoliv jazykem či frameworkem. Místo skládání řetězce, kde uživatelský vstup přímo vkládáte do SQL příkazu, předáte dotaz jako šablonu s placeholdery a hodnoty dodáte zvlášť. Databázový ovladač se pak postará o jejich bezpečné zakódování. Tento přístup funguje v PHP s PDO, v Pythonu s psycopg2, v Javě s PreparedStatement a podobně. Pokud používáte ORM, mějte na paměti, že i tam lze napsat nebezpečný „raw&amp;quot; dotaz – vždy preferujte vestavěné metody.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Při výběru berte v potaz velikost týmu a čas na vývoj. GraphQL se nevyplácí u malých projektů s úzkou doménou, kde by bylo schéma zbytečně složité. REST je tu rychlejší a přehlednější. Naopak pokud víte, že budete API rozšiřovat a klienti si budou žádat stále nové kombinace dat, GraphQL vám ušetří nekonečné přidávání endpointů. Typický kompromis: použijte REST pro veřejné API a GraphQL pro interní služby. Tím získáte to nejlepší z obou světů.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Zavedením těchto opatření – parametrizované dotazy, minimální práva, skryté chyby, whitelisty a pravidelné testování – snížíte riziko SQL injection na minimum. Neexistuje univerzální stříbrný náboj, ale kombinace technik vás ochrání před drtivou většinou útoků. Důležité je začít hned u nových projektů a postupně opravit i ty staré, kde se chyby často vyskytují.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Než začnete šířit svůj kód, zastavte se u výběru licence. Není to formalita, ale právní rámec, který určí, co s vaším dílem smí ostatní dělat. Špatná volba může odradit potenciální přispěvatele, nebo naopak umožnit komerční zneužití, které jste nezamýšleli. Základní otázka zní: Chcete, aby vaše knihovna zůstala vždy otevřená, nebo vám nevadí, že ji někdo začlení do uzavřeného produktu?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na závěr si shrňte, že správné verzování není o počtu verzí, ale o jasných pravidlech a automatech. Nastavte si jednoduchý workflow, který každý člen týmu pochopí: změna v knihovně vede k zvýšení verze, aktualizaci manifestu a záznamu do changelogu. Vše kontrolujte v CI. Tím se vyhnete nejistotě, která verze je aktuální, a projekt zůstane stabilní i při mnoha knihovnách. Vyhněte se improvisaci a spoléhání na paměť – jediným zdrojem pravdy je verzovací soubor, který musí být vždy aktuální.&lt;/div&gt;</summary>
		<author><name>LinneaFarrington</name></author>
	</entry>
</feed>