I build web applications and I'm into web application security. I like to speak about secure development. My mission is to teach web developers how to build secure and fast web applications and why. (more about me, contact)

My trainings

And this is what they say about them: Originally, I've arranged Michal's training primarily for my colleagues because "of course I already know these things"... Michal has changed my mind in the first hour of the first day and continued to do so for the whole two days. Thanks to this training I finally understood some of the attack/defense concepts in full depth, and especially in the right context. — Jan Pospíšil, Senior PHP developer, Czech Radio

Public trainings

Come to my public trainings, everybody's welcome:

Trainings in Prague (or remote) are held regularly in the middle of March, June, September, and December, in other cities irregularly.

In-house trainings

Any public training can also be turned into an in-house training. As an extra, I offer these in-house-only courses:

Looking for Introduction to PHP, Classes and objects in PHP? I've handed them over to Martin Hujer. I've discontinued Web application performance, Martin Michálek runs a similar training.

My articles

Check vulnerable packages with composer audit
January 25, 2023

When a security vulnerability is discovered in one of the PHP libraries you use, there are several options how you can learn about the bug before it's too late. I've written about PHP Security Advisories Database in one of my previous posts and how you can use it with Roave Security Advisories and a few other ways. However all of them require an extra package or a tool.

(read more…)

Inspecting HTTPS traffic in iOS, on Windows with Fiddler
December 1, 2020

Some time ago, I've change my Google password. That change logged me out of my Google account on my iPad so Photos, Chrome, and other apps were asking again for my password to log me back in. The only problem was that all I could see, was a blank page instead of the Google login form, or just -- (NSURLErrorDomain: -999) error.

(read more…)

Don't let security bugs catch you off guard
November 9, 2020

At the end of August, a critical security bug was discovered and immediately fixed in one of the popular PHP frameworks, Nette. Although the author of the framework, David Grudl, did everything possible, some did not learn about the bug in time and did not update their sites and web apps. Let me tell you a few tips not only for PHP, that will help you to know about similar problems as soon as possible.

(read more…)

All articles

My talks


Upcoming talks

…at your event or conference, let me know!


Co zajímá Špačka na nových verzích PHP?
October 6, 2022, 51. sraz přátel PHP v Praze v CareCloudu (15 minutes)

Každej den je pátek, dejte mi od deployování svátek
June 3, 2022, PHP live 2022 (40 minutes)

Jak princezna finálně zatočila s (DOM) XSS
February 17, 2022, JSDays 2022 (60 minutes)

HTTPS není jen ten zámeček
November 25, 2021, Webinář Asociace pro elektronickou komerci (APEK) (240 minutes)

Nejčastější bezpečnostní chyby webů, jak je řešit, hlásit a jak na hlášení reagovat
November 18, 2021, Webinář Asociace pro elektronickou komerci (APEK) (240 minutes)

All talks

Me answering questions

Michal Špaček: Před připojováním na veřejné Wi-Fi sítě už nevaruju
September 5, 2022, Lupa.cz

O temné straně UX designu
March 1, 2022, BlueGhost Update

Bezpečnost na internetu
February 2, 2021, Jak na sítě

Grading How Companies (In)Securely Store Passwords
August 1, 2019, All Things Auth Podcast

Engage in Continual Learning to Advance your IT Career
May 3, 2019, IT Career Energizer

All interviews