Nette 2.1 a vypnuti sanitizace
- MartyIX
- Člen | 217
Ahoj,
presel jsem na Nette 2.1 a narazil jsem na problem, ze potrebuji zachovat
\r\n
ve vstupu, tak jak to uzivatel poslal. V Nette 2.0.x stacilo
overridnout funkci setValue
V Nette 2.1 jsem ale nahrany, protoze nyni se sanitizace provadi v
https://api.nette.org/…orm.php.html#…
https://api.nette.org/…ers.php.html#…
https://api.nette.org/…ers.php.html#…
kterou nemohu nijak vypnout. Leda ze bych si zmenil zdrojak, coz se mi dvakrat nelibi.
Napada vas jeste jine reseni?
Diky
- David Matějka
- Moderator | 6445
jaka data control prijima si urcuje v loadHttpData – DATA_LINE, DATA_TEXT nebo DATA_FILE. vice na phpfashion
- David Grudl
- Nette Core | 8228
Jediný, kdo posílá \r\n
, jsou staré verze Explorerů, na to
vážně v aplikacích spoléháš?
- MartyIX
- Člen | 217
@David: Nevidim do toho do hloubky, ale podle vlakna na StackOverflow:
By HTML specifications, browsers are required to canonicalize line breaks in user input to CR LF (\r\n), and I don’t think any browser gets this wrong. Reference: clause 17.13.4 Form content types in the HTML 4.01 spec.
a doplneni si clovek udela obrazek.
Udelal jsem si maly test:
http://jsfiddle.net/DRG5B/1/ – posle POST data na nejakou domenu a pak se koukam v Chrome (Windows) v Developer Tools na Request Headers a vidim tam string:
text:line%0D%0Aanother+line%0D%0A++++
A pomoci nasledujicich prikazu se koukam, co se skutecne poslalo:
var_dump(json_encode("line\nanother line")); // prints: string(20) ""line\nanother line""
var_dump(json_encode(urldecode("line%0D%0Aanother+line%0D%0A++++"))); // prints: string(30) ""line\r\nanother line\r\n ""
Nevidim chybu a proto si myslim, ze minimalne Chrome na Windows posila
\r\n
.
A jeste k tomu duvodu, proc to vlastne potrebuju. Jde o jeden specificky
pripad, kdy hashuju vstup uzivatele (tj. presne to, co zadal) a tam uz je velky
rozdil mezi tim, jestli \r
ve vstupu je nebo neni.
Editoval MartyIX (5. 1. 2014 19:56)