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
Redaktor
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
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
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
Redaktor
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
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
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
Marian Benčat
Redaktor
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
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
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  +1 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.