Jak se chránit pro XSS útoku na php serveru?

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #15 kdy: 10. 10. 2019, 14:22:26 »
Navyše hodnoty v databázy ani netreba sanitizovať tak jak sa tu popisuje, stačí escapovať 3 znaky... Uvodzovky, apostrofy, a spätnú lomku. Ale bežne teraz framework už obstará kompletný sanitizing.
OMG len to nie, toto je amterizmus najhrubsieho zrna. Ano mozno to odradi nejake script kidis ale akonahle pouziju hotovy nastroj, tak ti vyberu celu databazu.

No ani ne, záleží jak je riešený server-side a prepojenie s databázou. Snaď nikto nepristupuje k databázy napriamo volaním SQL príkazov z PHP, však nechať všetko string, tieto 3 veci v stringu oescapovať a hotovo. Či?
« Poslední změna: 10. 10. 2019, 14:24:15 od Gabriel Mlocik »


Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #16 kdy: 10. 10. 2019, 14:25:29 »
1. používať retardovaný webhosting, proč? Proč ne normálne IaaS, PaaS? Zadarmo už bežne zoženieš zdielané VPS s vyhradeným 5GB úložiskom, 0.5GB RAM, a 200GB transferom pre jeden projekt / vlákno.
2. používať holé php, proč?
3. Riešiť escaping, když vätšina frameworkov už má Sanitizer v sebe? Proč to nepoužít?
4. Programovať v PHP webstránku? Proč? Však to neumí natívne ani plnohodnotný URL routing. Toto pritom zvláda JS, Golang, Python aj Rust či napr. Perl.
5. Riešiť miesto na disku? WTF? Je to úplne jedno, text sú bajty až kilobajty, miesta sú GB až TB. Aspoň pokiaľ sa nejedná o blbý free hosting.

Pamatuju si že kdysi existovala služba moxo, ale dopadlo to tak, že majitel odkadsi z ruska změnil přístupová hesla a ukradl všem uživatelům hesla a uložená osobní data. Webnode naše česká tradice a jistota, ne nějaký zavšivený cizinec z Ruska.

Já bych vám zase mohl položit podobné otázky, ale zredukuju to.

1. Proč bych měl používat cizí služby od lidí nebo firem, které neznám.
2. Proč bych se měl učit jiný jazyk, službu nebo cokoliv jiného cizího, když už tak phpéčkem jsem strávil roky a netvrdím, že to umím, protože za tu dobu se to zas posunulo jinam.
3. Asi máte problém chápat psané slovo. Psal jsem, že použiju freehosting, nechci platit za provoz služby, která je zadarmo. Jestli jste tak bohatý, že si to můžete dovolit, tak se hlásím o sponzoring.
« Poslední změna: 10. 10. 2019, 14:27:34 od exkalibr »

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #17 kdy: 10. 10. 2019, 14:30:11 »
Pamatuju si že kdysi existovala služba moxo, ale dopadlo to tak, že majitel odkadsi z ruska změnil přístupová hesla a ukradl všem uživatelům hesla a uložená osobní data. Webnode naše česká tradice a jistota, ne nějaký zavšivený cizinec z Ruska.

Já bych vám zase mohl položit podobné otázky, ale zredukuju to.

1. Proč bych měl používat cizí služby od lidí nebo firem, které neznám.
2. Proč bych se měl učit jiný jazyk, službu nebo cokoliv jiného cizího, když už tak phpéčkem jsem strávil roky a netvrdím, že to umím, protože za tu dobu se to zas posunulo jinam.
3. Asi máte problém chápat psané slovo. Psal jsem, že použiju freehosting, nechci platit za provoz služby, která je zadarmo. Jestli jste tak bohatý, že si to můžete dovolit, tak se hlásím o sponzoring.
[/quote]

1. Digital Ocean, GKE či GAE (Od Googlu), či Heroku (Od Salesforce) sa ti zdá že neznáš... ale no tak, Google zná aj moja 95 ročná babička.
3. Asi vy taky, jak som nedoporučoval niečo platené. Dokonca priamo cituješ: "Zadarmo už bežne zoženieš zdielané VPS s vyhradeným 5GB úložiskom, 0.5GB RAM, a 200GB transferom pre jeden projekt / vlákno."

Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #18 kdy: 10. 10. 2019, 14:30:30 »
Navyše hodnoty v databázy ani netreba sanitizovať tak jak sa tu popisuje, stačí escapovať 3 znaky... Uvodzovky, apostrofy, a spätnú lomku. Ale bežne teraz framework už obstará kompletný sanitizing.

To jste mě pobavil. A co když vám tu spätnú lomku vyescapuju?

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #19 kdy: 10. 10. 2019, 14:31:58 »
Navyše hodnoty v databázy ani netreba sanitizovať tak jak sa tu popisuje, stačí escapovať 3 znaky... Uvodzovky, apostrofy, a spätnú lomku. Ale bežne teraz framework už obstará kompletný sanitizing.

To jste mě pobavil. A co když vám tu spätnú lomku vyescapuju?

veď když už escapuješ, tak sa string zostane stringom, ak pridáš ďalšiu lomku budú tam 2 escapnuté lomky, teda \\\\ a to je v poriadku, lebo v reťazci sa to chová ako obyčajné 2 lomky bez funkcie. Ak dáš jednu lomku, tak sa escapne na \\, to je taky v poriadku, v retazci je to jedna lomka bez funkcie.


Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #20 kdy: 10. 10. 2019, 15:37:49 »
Navyše hodnoty v databázy ani netreba sanitizovať tak jak sa tu popisuje, stačí escapovať 3 znaky... Uvodzovky, apostrofy, a spätnú lomku. Ale bežne teraz framework už obstará kompletný sanitizing.

K čemu má být escapování dobré? Vždyť to každá databáze má jinak. Smysl mají jedině prepared statements. Můžeš použít i metodu quote(), ale to je jen taková nesystémová  nouzovka.

Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #21 kdy: 10. 10. 2019, 16:05:01 »
Tomu bych se chtěl vyhnout. Co se stane, když uživatel začne odesílat hromadu značek jako: &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& nedojde zachvíli k tomu, že budu mít tolik množství textu, které budu muset analyzovat? To bude zpomalovat běh serveru a zbytečně zabírat místo na disku. Jenom ta sekvence nahoře zabrala 455 znaků. Došlo k pětinásobnému prodloužení textu. Proto bych ty znaky buďto rád odstranil, aby je nebylo možné použít nebo zastavil uživatele, že použil nepovolené znaky. Nechci ukádat věci, které nepoužívám.
No tak potom prostě před uložením zkontrolujete vstupní data a pokud v nich najdete něco ze skupiny [&<>] tak to uživateli vrátíte s chybovou hláškou o nepovolených znacích. Nebo ty znaky prostě z dat vyhoďte když vám zabírají místo.
V čem je vlastně problém ?

Stefan

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #22 kdy: 10. 10. 2019, 16:27:02 »
K čemu má být escapování dobré? Vždyť to každá databáze má jinak. Smysl mají jedině prepared statements. Můžeš použít i metodu quote(), ale to je jen taková nesystémová  nouzovka.

no ja neviem, ja to nikdy neriešil, na holom nerobil... framework mi sanitizing vyriešil priamo.

Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #23 kdy: 10. 10. 2019, 17:25:42 »
3. Asi vy taky, jak som nedoporučoval niečo platené. Dokonca priamo cituješ: "Zadarmo už bežne zoženieš zdielané VPS s vyhradeným 5GB úložiskom, 0.5GB RAM, a 200GB transferom pre jeden projekt / vlákno."

Ale já jsem to vyvrátil, jako nedůvěryhodný argument. V tomto světě není nic zadarmo, nikdo ti nedá nic 5GB zadarmo? A náhodou někde v kapse u sebe nemáš 1T bytový disk zadarmo? Jeden by se mi hodil. Nebo víc T když je všechno tak zadarmo.

Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #24 kdy: 10. 10. 2019, 17:44:07 »
Navyše hodnoty v databázy ani netreba sanitizovať tak jak sa tu popisuje, stačí escapovať 3 znaky... Uvodzovky, apostrofy, a spätnú lomku. Ale bežne teraz framework už obstará kompletný sanitizing.

To jste mě pobavil. A co když vám tu spätnú lomku vyescapuju?

veď když už escapuješ, tak sa string zostane stringom, ak pridáš ďalšiu lomku budú tam 2 escapnuté lomky, teda \\\\ a to je v poriadku, lebo v reťazci sa to chová ako obyčajné 2 lomky bez funkcie. Ak dáš jednu lomku, tak sa escapne na \\, to je taky v poriadku, v retazci je to jedna lomka bez funkcie.

To escapování se dá obejít - za určitých okolností. Ale je fakt, že podrobnosti si nepamatuju. Na toto téma je třeba prohledat internet:

https://security.stackexchange.com/questions/134208/how-to-bypass-backslash-escaping-xss

Zde se např. píše:
Citace
Whether they are completely ignored or improperly escaped, they seem to be a frequent cause of reflected XSS. Because I come across this issue so often,
https://www.securitysift.com/quotes-and-xss-planning-your-escape/

Na mě je ale tahle problematika příliš rozsáhlá abych to četl.

Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #25 kdy: 10. 10. 2019, 17:46:31 »
Tomu bych se chtěl vyhnout. Co se stane, když uživatel začne odesílat hromadu značek jako: &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& nedojde zachvíli k tomu, že budu mít tolik množství textu, které budu muset analyzovat? To bude zpomalovat běh serveru a zbytečně zabírat místo na disku. Jenom ta sekvence nahoře zabrala 455 znaků. Došlo k pětinásobnému prodloužení textu. Proto bych ty znaky buďto rád odstranil, aby je nebylo možné použít nebo zastavil uživatele, že použil nepovolené znaky. Nechci ukádat věci, které nepoužívám.
No tak potom prostě před uložením zkontrolujete vstupní data a pokud v nich najdete něco ze skupiny [&<>] tak to uživateli vrátíte s chybovou hláškou o nepovolených znacích. Nebo ty znaky prostě z dat vyhoďte když vám zabírají místo.
V čem je vlastně problém ?

Stefan

Ale vlastně vůbec v ničem. Přesně toto jsem přece psal v otázce, že to tak udělám a zda to tak stačí. Jen jsem chtěl slyšet jestli to stačí nebo ne.

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #26 kdy: 10. 10. 2019, 17:50:58 »
3. Asi vy taky, jak som nedoporučoval niečo platené. Dokonca priamo cituješ: "Zadarmo už bežne zoženieš zdielané VPS s vyhradeným 5GB úložiskom, 0.5GB RAM, a 200GB transferom pre jeden projekt / vlákno."

Ale já jsem to vyvrátil, jako nedůvěryhodný argument. V tomto světě není nic zadarmo, nikdo ti nedá nic 5GB zadarmo? A náhodou někde v kapse u sebe nemáš 1T bytový disk zadarmo? Jeden by se mi hodil. Nebo víc T když je všechno tak zadarmo.

Nič neni zadarmo? tak čo Linux, a čo napríklad Gimp? ach jaj, či niečo platíš za ich používanie?

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #27 kdy: 10. 10. 2019, 19:08:01 »
K čemu má být escapování dobré? Vždyť to každá databáze má jinak. Smysl mají jedině prepared statements. Můžeš použít i metodu quote(), ale to je jen taková nesystémová  nouzovka.
no ja neviem, ja to nikdy neriešil, na holom nerobil... framework mi sanitizing vyriešil priamo.

Framework s tím nedělá vůbec nic, jen to předá dál.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #28 kdy: 10. 10. 2019, 19:11:35 »
To escapování se dá obejít - za určitých okolností. Ale je fakt, že podrobnosti si nepamatuju. Na toto téma je třeba prohledat internet:

https://security.stackexchange.com/questions/134208/how-to-bypass-backslash-escaping-xss

Proto se escapování nedělá a nechává se to na databázovém ovladači, který to udělá nejlépe.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Jak se chránit pro XSS útoku na php serveru?
« Odpověď #29 kdy: 10. 10. 2019, 19:15:32 »
No tak potom prostě před uložením zkontrolujete vstupní data a pokud v nich najdete něco ze skupiny [&<>] tak to uživateli vrátíte s chybovou hláškou o nepovolených znacích. Nebo ty znaky prostě z dat vyhoďte když vám zabírají místo.
V čem je vlastně problém ?

Stefan
Ale vlastně vůbec v ničem. Přesně toto jsem přece psal v otázce, že to tak udělám a zda to tak stačí. Jen jsem chtěl slyšet jestli to stačí nebo ne.

To je právě chybně. Co když uživatel potřebuje uložit znaky <&> a ty mu je z nějakých pochybných důvodů smažeš? Hezky mu je tam nechej.