Bezpečnost webových aplikací mě zajímá a baví mě ji zkoumat. Je to citlivé téma a každá zapomenutá drobnost může dostat do problémů nejen vás, ale i vaše uživatele. O zabezpečení webu často píšu články a přednáším. Rád vaše vývojáře naučím, jak webové aplikace zabezpečit a jak je na bezpečnost testovat. Školení je vhodné i pro vývojáře, kteří pracují např. v Javě nebo Pythonu, většina útoků a principů je stejných.

Zabezpečené přenosy dat pomocí protokolu HTTPS detailně rozebíráme na školení pro správce a vývojáře.

Course name

PHP application security


Content

Description, threats, and defense against web attacks:

Day 1

  • Application and device discovery

    Using specialized search engines like Shodan or Certificate Transparency.

  • Full Path Disclosure

    Why are PHP error messages appealing to the attacker and what do they learn from them?

  • Cross-Site Scripting (XSS)

    Attacks againt visitors and their browsers, different XSS types (stored, reflected, DOM-based), defending on the server and in the browser, XSS Auditor, BeEF demo.

  • Content Security Policy (CSP)

    Another additional defense layer against XSS and more. Uses lists of allowed resources.

  • SQL Injection

    About “dumping” data and changing them in tables that are not accessible by default. Details about Blind SQL Injection, Time-based blind SQL Injection, and the differences between prepared statements and variable binding. Testing the vulnerability using a demo site, sqlmap demo.

  • File uploads and remote execution

    How to upload user files, where to store then, how to name the files. Running external programs (for example image resizing) “in the cloud”, and the danger lurking in deserializing user inputs.

  • Cross-Site Request Forgery (CSRF), Clickjacking

    A bad guy can force a user to perform an action without their knowledge or lure him to click on a page element they would not normally click. What is it good for and how to defend against such thing?

  • Session Hijacking, Session Fixation

    Whoever is in possesion of session id is the master, so we have to protect the id. About HTTP-only cookies, session id regeneration, and also about multiple user sessions.

Day 2

  • XML External Entity Injection (XXE)

    Configuration files or source code can be obtained from the server by parsing XML files with custom entities. We'll see how and how to stop it.

  • Secure random data

    Where the randomness comes from, why rand() shouldn't be used for generating tokens, encryption keys etc.

  • Hashing and storing user passwords

    How passwords are cracked, what's “salt”, why use algorithms like bcrypt or Argon2i, why not MD5 or SHA-1 (or SHA-2, SHA-3). How to change hashing algorithm without resetting passwords for all users?

  • Data encryption

    What's Authen­ticated Encryption (AE) and how to encrypt data?

  • HTTPS

    Server configuration, testing tools, enforcing HTTPS with HTTP Strict Transport Security (HSTS).

  • Unauthorized data access

    How to get other customers' invoices and how to protect your application against the Insecure Direct Object Reference attack.

  • Abusing contact forms to send spam

    Adding arbitrary headers to send messages to attacker-supplied recipients, with custom message bodies.

  • Configuration and protecting source code

    Server and PHP configuration best practices.

  • HTTP security headers

    Some HTTP headers may help you protect your application better, or just make a successful attack less bad. We'll see which headers and how to test your site using Security Headers and Mozilla Observatory.


Lecturer

Michal Špaček (about the lecturer, contact the lecturer)


Prerequisites

Just basic knowledge of HTML, JavaScript, PHP and SQL. Training is also appropriate for developers working in other languages (e.g. Java or Python), most of the principles and attacks are the same.


Target audience

The training is designed for both senior web application developers and junior developers to gain competitive advantage.


Length

Školení je dvoudenní, každý den 8 hodin i s přestávkami, ale dle situace se může až o hodinu protáhnout.
Pokud budete chtít probrat jen některá témata, můžeme školení uspořádat pouze jednodenní.


Capacity

Unlimited but over 12 people we'll have less time for questions.


Price

40000 Kč, 48400 Kč incl. VAT
Základní cena jednodenního školení je 20000 Kč bez DPH, 24200 Kč s DPH.


Materials

Participants will receive a printed materials and a certificate. We'll dedicate enough time for questions. After completing the training, I'll send the presentation with comments via e-mail as well as with the code examples used for the training.


Training reviews

Martin Ambrož, AVAST Software a.s.

Školení o bezpečnosti PHP aplikací Michala Špačka předčilo má očekávání. Vývoji webových aplikací se profesionálně věnuji 13 let, přesto musím zkonstatovat, že pořád je co nového se učit. Je vidět, že pan Špaček má o bezpečnosti velký přehled a že je to i jeho koníček. Kromě přehledně zpracovaných podkladů ke školení jsem uvítal i mnoho praktických ukázek a dostatečný prostor pro dotazy přímo při probírání každého tématu.

Adam Tyroň, Růžový slon s.r.o.

Školení se mi líbilo a splnilo má očekávání. Skvěle připravené, teorie proložena praktickými ukázkami. Školení mi sjednotilo a rozšířilo dosavadní znalosti o problematice. Doporučuji aby školením prošli všichni weboví vývojáři.

Filip Klimeš, Startupedia s.r.o.

Na VŠ jsem absolvoval předmět týkající se bezpečnosti webových aplikací, ale chyběly mi praktické znalosti. Michal Špaček je uznávaný odborník na toto téma, proto jsem zamířil na jeho školení. To perfektně splnilo svoji roli, doplnilo i některé mezery v teorii a nuda se na něm rozhodně nekonala. Za tu cenu bezkonkurenční.

Find more reviews on the public training reviews page.


Sign-up

To order an in-house training, just pick a date and drop me an e-mail to sort out other details.

Česky