Diskuze: Nefunkční string

C# .NET .NET (C# a Visual Basic) Nefunkční string American English version English version

Avatar
Filip Macháček:

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. listopadu 21:38
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

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. listopadu 21:42
Avatar
Filip Macháček:

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. listopadu 21:46
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

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. listopadu 21:49
Avatar
Filip Macháček:

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

 
Nahoru Odpovědět 27. listopadu 21:50
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Filip Macháček
Marian Benčat:

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. listopadu 23:00
Avatar
HONZ4
Člen
Avatar
Odpovídá na Filip Macháček
HONZ4:

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. listopadu 23:13
Avatar
Filip Macháček:
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. listopadu 8:12
Avatar
Filip Macháček:

Už vyřešeno děkuji.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět 28. listopadu 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.