reklama

Nápad na bakalářskou práci se Spring

Re:Nápad na bakalářskou práci se Spring
« Odpověď #60 kdy: 13. 08. 2019, 22:02:01 »
Čili data, která přijdou na server bych neměl na vstupu nijak kontrolovat/odescapovávat a normálně je rovnou uložit do databáze? Čili na serveru nemusím dělat žádnou kontrolu vůči XSS útokům? Nebo to mám zkontrolovat (udělat escapování) těsně před tím, než pošlu data na view? Nebo poslat ta data přímo z DBa udělat escapování a kontrolu těch dat až na view při renderování dat?
Na vstupu byste data měl kontrolovat – tj. pustit dál jenom taková data, která mají smysl, platné hodnoty. Třeba pokud někde má být věk v letech, musí to být nezáporné celé číslo, a je rozumné alespoň s varováním kontrolovat i nějakou horní hranici. Ale ne escapovat – pokud uživatel zadává např. obyčejný text, je posloupnost <script> legální posloupností (co když uživatel třeba bude posílat část svého kódu). Escapovat je nutné na výstupu – aby se zobrazilo zase <script>, co zadal uživatel, a ne aby se místo toho vložil do HTML skutečný skript.

Escapování by se mělo ideálně dělat až ve view při renderování dat. Rozumné knihovny pro view jsou dokonce navržené tak, že ve výchozím nastavení samy escapují a pokud escapovat nechcete, protože máte příslušná data ošetřená jinak, musíte to speciálně zadat. Pokud takovou funkci knihovna pro view nemá, musel byste escapovat před tím, než data pošlete do view. Ale tomu bych se snažil vyhnout, protože na to určitě někde zapomenete.

reklama


 

reklama