Webový formulář je v informatice označení pro speciální vstupní prvky zobrazitelné ve webovém prohlížeči, které umožňují uživateli odeslat data na webový server, kde jsou následně zpracována. Webové formuláře se podobají klasickým papírovým nebo databázovým formulářům – obsahují vstupní pole pro text, přepínače, vyskakovací menu i tlačítka. Formulář může být použit například pro odeslání dodací adresy, vyplněné objednávky nebo při vyhledání části textu na webové stránce.
Webové formuláře jsou definovány ve formálních programovacích jazycích jako HTML, Perl, PHP, Java, Javascript nebo .NET (včetně ASP.NET). Implementace formulářů v těchto jazycích často automaticky využívá styly uživatelského rozhraní, jako jsou mřížky, minimalizuje programovací čas, náklady a rizika.
XHTML/HTML formuláře
Formulář v XHTML nebo HTML je nejběžnější způsob online použití. Formulář může být vytvořen pomocí následujících prvků:
vstupní pole
textové – jednoduché textové pole, které umožňuje vložit řádek textu (alternativou je heslo, kdy je místo jednotlivých znaků zobrazován nejčastěji symbol hvězdičky nebo puntíku)
checkbox – dovoluje vybrat žádnou, jednu nebo více možností
přepínač (anglickyradio button) – dovoluje vybrat jednu možnost z více nabízených
soubor – slouží pro odeslání souboru na server
reset – slouží pro nastavení výchozích hodnot formuláře
odeslat – vykoná akci přiřazenou formuláři (typicky odešle data na server)
textové pole – podobně jako textové vstupní pole, s tím rozdílem, že umožňuje vložit víceřádkový text
select – zobrazí roletkový seznam, ze kterého si může uživatel vybrat jednu možnost
Na obrázku vpravo jsou zobrazeny následující elementy:
textbox pro zadání jména
dva radio buttony pro zvolení pohlaví
roletkový seznam pro výběr barvy očí
dva check boxy pro zatržení odpovídající vlastnosti
textové pole pro popsání atletických dovedností
tlačítko pro odeslání formuláře
XForms
XForm je alternativní standard navržený pro reprezentaci nové generace HTML/XHTML formulářů. Tento standard je dostatečně obecný, aby mohl být použitý samostatným způsobem nebo při prezentaci v jiných jazycích než HTML nebo XHTML. Na rozdíl od HTML/XHTML používá XForms návrhového vzoruModel-view-controller.
Xform dokument může být stejně jednoduchý jako HTML/XHTML formulář. Oproti nim však nabízí mnoho pokročilých vlastností. Formulář může například reagovat v reálném čase a získávat vkládané informace už během zobrazení formuláře, bez použití samostatných skriptovacích jazyků. Formulář může specifikovat jak mají být data ověřena, nebo jaké části formuláře se mohou měnit v závislosti na vložených datech v jiné části formuláře.
Standard XForms v současnosti není podporován v dostupných webových prohlížečích.
Za standardní jazyk pro skriptování na straně klienta je de facto považován jazyk JavaScript. JavaScript využívá DOM, což umožňuje dynamické chování a změny webové stránky v prohlížeči.
Jelikož jsou možnosti jazyků pro skriptování na straně klienta v kombinaci s formuláři omezené, často slouží pro ověření správnosti dat ještě před odesláním na server. Také se používají k předzpracování dat před jejich předáním aplikaci na serveru (např. pro uložení do databáze).
Na straně serveru
Programy spouštěné na straně serveru mohou vykonávat širokou škálu příkazů za účelem vytvoření dynamických webových stránek – přes autentizaci přihlašovacích údajů (např. LDAP), načítání a ukládání dat v databázích, kontrolu pravopisu až po odesílání e-mailů). Některé skripty prováděné na straně serveru musí projít přes rozhraní CGI (Common Gateway Interface), aby mohly splnit požadovaný úkol.
Výhodou skriptování na straně serveru je přenesení funkcionality na jeden počítač (server) namísto spoléhání na různé implementace stejných funkcí v mnoha webových prohlížečích.
Běžně jsou aplikace používané na webových stránkách psané ve skriptovacích jazycích. Je ale také možné použít kompilované jazyky.
PHP je jeden z nejběžněji používaných jazyků pro psaní webových aplikací na straně serveru a je jeden z mála jazyků určených právě pro serverové aplikace.
PHP skript může:
zobrazit informace na jiné stránce (např. uživatel vloží jméno a to se následně zobrazí na webové stránce)
sloužit jako přihlašovací rozhraní
uložit data do databáze (např. MySQL, ASCII soubor a další)
uložit informace o uživatelově počítači v HTTP cookie
vygenerovat e-mail na základě vložených dat, včetně připojení přílohy
Hodnota atributu action určuje soubor, který zpracuje odeslaná data. Cílový PHP soubor obdrží data pomocí metody POST nebo GET. V příkladu je ukázán jednoduchý formulář, který předá uživatelské jméno pomocí metody GET.
<html><body><?php/* * Tento skript vypíše text, který byl odeslán pomocí formuláře na stránce form.html. */$name=$_GET['user'];echo"Hello, ".$name."!";?></body></html>
Ve výše uvedeném skriptu je nutné použít příkaz $_GET[''] nebo $_POST[''] podle toho, která metoda byla použita ve formuláři, zatímco $_REQUEST[''] je možné použít pro obě metody. Hodnota atributu input name="" HTML formuláře musí být shodná s hodnotou indexu $GET[''].
Jedná se o vložení části škodlivého kódu do napadené stránky. V případě, kdy není ošetřen vstup formuláře, je možné odeslat speciální znaky (např. < a >). Pokud je takovýto text následně vypsán na webové stránce, považuje ho prohlížeč za součást html kódu a vykreslí ho do výsledné stránky. Proto je nutné takovéto znaky zaměnit za správné html entity (např. < za <).
SQL injection
Související informace naleznete také v článku SQL injection.
Tento typ útoku se zaměřuje na databáze. Pokud není ošetřen vstup formuláře, pomocí kterého se odesílají data do databáze, je možné odeslat místo předpokládaného vstupu, část SQL příkazu. Pokud je tato část příkazu vhodně sestavena může být při následném odeslání pochopena databází jako součást původního příkazu. Databáze pak může provést zcela jinou akci než původně programátor zamýšlel. Pomocí tohoto útoku se dá například získat přístup k datům v databázi nebo ji úplně vymazat.
Reference
V tomto článku byl použit překlad textu z článku Form (web) na anglické Wikipedii.