NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Filip Macháček:27.11.2016 21:38

Zdravim mám v projektu promenou url a v te je ulozeno neco na zpusob http//neco.cz/in­dex.php?arg1=1&ar­g2=2 ale kdyz si pak necham tu promenou vypsat není tam ulozen znak & coz je v adrese klicovy nevi nekdo cim toje ? Diky. Ps sorry za diakritiku pisu na mobilu a to nejde

 
Odpovědět
27.11.2016 21:38
Avatar
Marian Benčat:27.11.2016 21:42

Co znamená vypsat? Kde vypsat? V konzoli? V Html template?? Ten znak tam je na 100% jen jde o to, jakou používáš znakovou sadu, případně jaký máš escaping, kvůli bezpečnosti.

pokud vypisuješ do konzole, musíš ji přepnout z na unicode:

Console.OutputEncoding = System.Text.Encoding.Unicode
Nahoru Odpovědět
27.11.2016 21:42
Totalitní admini..
Avatar
Filip Macháček:27.11.2016 21:46

Používám to ve windows form aplikaci kde do stringu ulozim promene pomocí & je oddelim a stahuji pres webclient s tím že to otevře http://neco,cz/index.php?…&..... A čekám co se vráti ... Ale když jsem to nechal tu cestu vypsat labelem tak se to vše objevilo bez znaku &

 
Nahoru Odpovědět
27.11.2016 21:46
Avatar
Marian Benčat:27.11.2016 21:49

Protoze to encoduje z bezpečnostních důvodů. Ta komponenta ma na sobe neco jako EncodeHTML a je to nastavitelný bool.

Doporučuji si ale dvakrát rozmyslet, než to vypneš. pokud je to totiž input od uživatele, vystavuješ se tím XSS útoku.

Nahoru Odpovědět
27.11.2016 21:49
Totalitní admini..
Avatar
Filip Macháček:27.11.2016 21:50

A jak to lze bezpečně vyřešit. ?

 
Nahoru Odpovědět
27.11.2016 21:50
Avatar
Odpovídá na Filip Macháček
Marian Benčat:27.11.2016 23:00

Buďto musíš omezit to co může být inputem, nebo musíš upravit sanitizacni strategii, ktera se pouziva u toho zobrazovani.

pokud jsi si opravdu jistý, že se v tom labelu vyskytnou vždy bezpečná data, můžeš u něj vypnout encoding. Druhá možnost je kouknout se na sanitizaci (HTML Encoding) web formu a třeba ho přenastavit. (nemám tušení jak se to dělá).

Popravdě jsem s webform nedělal X let a už si to nepamatuji, Vim, že je tam Label a Literal control a jeden z nich se encoduje, druhý ne.

Musím tě asi odkázat na google / dokumentaci.

Nahoru Odpovědět
27.11.2016 23:00
Totalitní admini..
Avatar
HONZ4
Člen
Avatar
Odpovídá na Filip Macháček
HONZ4:27.11.2016 23:13

jsem to nechal tu cestu vypsat labelem tak se to vše objevilo bez znaku &

aby se ti vypsal v labelu znak & musíš tomu labelu nastavit .UseMnemonic=fal­se

 
Nahoru Odpovědět
27.11.2016 23:13
Avatar
Filip Macháček:28.11.2016 8:12
url = "http://neco.cz/login.php?&user=" + d_usr + "&pass=" + d_pass;
          WebClient wc = new WebClient();
      wc.Encoding = System.Text.Encoding.UTF8;
          string data = wc.DownloadString(url);

V kódu mám udělané toto ale ono to vůbec na to stránku "nevleze" ani nestáhne
=(

 
Nahoru Odpovědět
28.11.2016 8:12
Avatar
Filip Macháček:28.11.2016 8:25

Už vyřešeno děkuji.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
28.11.2016 8:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.