Escapování defaultní hodnot inputu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kejlicz
Člen | 201
+
0
-

Ahoj všem.
Chci se zeptat, jak je to s escapováním přenastavených hodnot formulářových prvků. Mám formulářový input a nastavým mu setDefaultValue() na potencionálně nebezpečný řetězec. Když kouknu do HTML kódu stránky, tak všude na stránce, kde se ten řetězec vypisuje přes latte je to správně escapované, ale u prvku <input> v atributu value to escapované není. Sice se vložený JS nebo HTML neprovede, ale je i tak se chci zeptat, jak se tohle řeší. Má se to escapovat ručně v presenteru při nastavovaní hodnoty, nebo to není potřeba?

Díky moc za objasnění.

Editoval kejlicz (25. 7. 2016 21:35)

GEpic
Člen | 566
+
+1
-

kejlicz napsal(a):

Ahoj všem.
Chci se zeptat, jak je to s escapováním přenastavených hodnot formulářových prvků. Mám formulářový input a nastavým mu setDefaultValue() na potencionálně nebezpečný řetězec. Když kouknu do HTML kódu stránky, tak všude na stránce, kde se ten řetězec vypisuje přes latte je to správně escapované, ale u prvku <input> v atributu value to escapované není. Sice se vložený JS nebo HTML provede, ale je i tak se chci zeptat, jak se tohle řeší. Má se to escapovat ručně v presenteru při nastavovaní hodnoty, nebo to není potřeba?

Díky moc za objasnění.

Já vím, že jsem s tím ‚proč‘ otravný… Ale proč nastavujete výchozí hodnotu na potenciálně nebezpečnou? :D

Editoval GEpic (25. 7. 2016 15:32)

Vastlik
Člen | 58
+
0
-

GEpic napsal(a):

kejlicz napsal(a):

Ahoj všem.
Chci se zeptat, jak je to s escapováním přenastavených hodnot formulářových prvků. Mám formulářový input a nastavým mu setDefaultValue() na potencionálně nebezpečný řetězec. Když kouknu do HTML kódu stránky, tak všude na stránce, kde se ten řetězec vypisuje přes latte je to správně escapované, ale u prvku <input> v atributu value to escapované není. Sice se vložený JS nebo HTML provede, ale je i tak se chci zeptat, jak se tohle řeší. Má se to escapovat ručně v presenteru při nastavovaní hodnoty, nebo to není potřeba?

Díky moc za objasnění.

Já vím, že jsem s tím ‚proč‘ otravný… Ale proč nastavujete výchozí hodnotu na potenciálně nebezpečnou? :D

Myslím si, že bere nějakou hodnotu z DB a tu vkládá jako default value, např. když máš user profile, tak tam dá za jméno z db jako default value, místo toho, aby tam bylo prázdného pole.

David Grudl
Nette Core | 8239
+
0
-

Buď konkrétní.

kejlicz
Člen | 201
+
0
-

Předem bych chtěl upozornit na opravu důležitého „překlepu“ v mém prvním postu. Původně " Sice se vložený JS nebo HTML provede…" má být " Sice se vložený JS nebo HTML NEprovede …"

kejlicz
Člen | 201
+
0
-

GEpic napsal(a):

Já vím, že jsem s tím ‚proč‘ otravný… Ale proč nastavujete výchozí hodnotu na potenciálně nebezpečnou? :D

Mám formulář na vyhledávání. Uživatel odešle hledaný text a vypíšou se mu výsledky dotazu z DB a předvyplní se formulářové políčko tím co hledal.

Myiyk
Člen | 321
+
0
-

S defaultní hodnotou bych nic nedělal. Nenapadá mě nebezpečí, které by tam bylo.
Hlavně escapovat tu proměnnou když se to hledá v databázi.

kejlicz
Člen | 201
+
0
-

Myiyk napsal(a):

S defaultní hodnotou bych nic nedělal. Nenapadá mě nebezpečí, které by tam bylo.
Hlavně escapovat tu proměnnou když se to hledá v databázi.

Když jede DB přes Doctrinu a používám prepared statements, tak to escapovat nemusím, že?

Myiyk
Člen | 321
+
+1
-

@kejlicz dle dokumentace prepared statements je bezpečné
http://doctrine-orm.readthedocs.io/…ecurity.html#…

GEpic
Člen | 566
+
0
-

Myiyk napsal(a):

@kejlicz dle dokumentace prepared statements je bezpečné
http://doctrine-orm.readthedocs.io/…ecurity.html#…

To by měla být i Nette\Database, ne? klucí? Ošetřená proti sql inject…

Editoval GEpic (26. 7. 2016 0:50)