SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
5 SECURITY THINGS TO DO AS A DEVELOPER
Dietrich Rordorf
Security in 15 Minuten erklärt??
Geht nicht. !
GEDANKENEXPERIMENT
Mein Kunde möchte die Sicherheit seiner Web
Applikation erhöhen.
Sein knappes Budget gibt nur 10 Stunden her.
Was mache ich?
10h
Zunächst mein Vorschlag
Anstatt Q&A à Eure Vorschläge?
10h
1Massnahme
Coffee-Level
☕
1 / KEINE HARDCODED SECRETS
↣ Config Dateien und Deploy-Scripte prüfen
↣ Passwörter mit ENV-Variablen ersetzen
↣ In PHP auslesen mit getenv( )
DB_HOST=localhost
DB_USER=my_db_user
DB_PASSWORD=my_db_password
DB_APP_NAME=my_app_db
$resource = new PDO(
sprintf(
"mysql:host=%s;dbname=%s",
getenv('DB_HOST'),
getenv('DB_APP_NAME')
),
getenv('DB_USER'),
getenv('DB_PASSWORD')
);
8h
2h
1 / KEINE HARDCODED SECRETS
8h
↣ Wer hat Zugriff auf mein Repo?
↣ Ist mein Repo sicher?
↣ GitHub Apps / Integrationen
RATIONALE
2Massnahme
8h
☕Coffee-Level
☕
2 / MYSQL HARDENING
↣ Remote-Zugriff sperren
↣ Validate Password Plugin
↣ Strenge Password Requirement Policy
↣ Alle Passwörter neu setzen
↣ Überflüssige Datenbank-Users löschen
↣ Überflüssige Privilegien entziehen
7.5h
0.5h
2 / MYSQL HARDENING
7.5h
↣ Datenbestand wertvollster Teil einer App
↣ Remote Schreib- oder Root-Zugriff überflüssig
RATIONALE
🤑
3Massnahme
7.5h
☕Coffee-Level
☕
3 / PHPMYADMIN HARDENING
↣ Subdomain einrichten
↣ SSL-Verbindung
↣ root Login sperren
↣ Eigener Datenbank-User einrichten für PMA (read-only)
↣ IP Ranges limitieren
6h
1.5h
3 / PHPMYADMIN HARDENING
6h
↣ Wir haben es alle im Einsatz
↣ Komfortabel zum Debuggen
↣ Auf prod Umgebung ein trojanisches Pferd
RATIONALE
😱
4Massnahme
☕Coffee-Level
☕
6h
☕
4 / KNOWN VULNERABILITIES
↣ Moderne Apps haben Dependencies
↣ Paket-Manager: composer, npm
↣ Anfällige Pakete
↣ Dependencies-Scanner wie snyk.io
↣ Snyk GitHub-Integration: Pull Request mit Fixes für
composer.json oder package.json
4h
2h
4 / KNOWN VULNERABILITIES
4h
↣ Attack-Vektor für Hacker bereits bekannt
↣ Paketversionen haben Signaturen oder hinterlassen „Spuren“ im
HTML (speziell JS Libs im Frontend)
↣ Web App als Target identifizierbar
RATIONALE
5Massnahme
☕Coffee-Level
☕ ☕
4h
☕ ☕
5 / CODE REVIEW
↣ ohne Anhaltspunkte unrealistisch
↣ OWASP Code Review Guide: 216 Seiten
↣ Lösung: Static Code Analysis
↣ SonarCloud (PHP, JS und mehr) + sonnar-scanner
↣ phpcs-security-audit
0h
4h
🙈
5 / CODE REVIEW
0h
4h
↣ Nach OWASP & SANS Tags filtern, Critical oder Blocker
5 / CODE REVIEW
0h
↣ Eigene Schwachstellen beseitigen
RATIONALE
Tag ist fertig
☕Coffee-Level
☕ ☕
0h
☕ ☕ 🍺 🍺
SURVEY
Problem Kennen Problem nicht Kennen Problem
1 / Hardcoded Secrets 4 16
2 / MySQL Hardening 8 12
3 / PMA Hardening 7 13
4 / Known Vulnerabilities 6 14
5 / Code Review 3 17
Anzahl Devs n = 20
DANKE !
Dietrich Rordorf
GitHub github.com/rordi
Work ditoy.com
Side hustles ediqo.com und teacherflow.ch

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (8)

Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsMagento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
 
Wordpress-Installation
Wordpress-InstallationWordpress-Installation
Wordpress-Installation
 
Tag Manager Professional
Tag Manager ProfessionalTag Manager Professional
Tag Manager Professional
 
WordPress-Webseiten umziehen / online stellen
WordPress-Webseiten umziehen / online stellenWordPress-Webseiten umziehen / online stellen
WordPress-Webseiten umziehen / online stellen
 
TYPO3camp Munich 2018 - Keynote - "Wo woll'n mer denn hin?"
TYPO3camp Munich 2018 - Keynote - "Wo woll'n mer denn hin?"TYPO3camp Munich 2018 - Keynote - "Wo woll'n mer denn hin?"
TYPO3camp Munich 2018 - Keynote - "Wo woll'n mer denn hin?"
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
 

Ähnlich wie 10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
Frank Schmittlein
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
Mayflower GmbH
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
Torsten Kleiber
 

Ähnlich wie 10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen (20)

SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
Client side webdevelopment with jet
Client side webdevelopment with jetClient side webdevelopment with jet
Client side webdevelopment with jet
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
9 Tipps für die Modernisierung von PHP-Anwendungen
9 Tipps für die Modernisierung von PHP-Anwendungen9 Tipps für die Modernisierung von PHP-Anwendungen
9 Tipps für die Modernisierung von PHP-Anwendungen
 
Site Speed EXTREME - SEOkomm 2014
Site Speed EXTREME - SEOkomm 2014Site Speed EXTREME - SEOkomm 2014
Site Speed EXTREME - SEOkomm 2014
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Sonar - Software Qualitätsmanagement ohne Schmerzen
Sonar - Software Qualitätsmanagement ohne SchmerzenSonar - Software Qualitätsmanagement ohne Schmerzen
Sonar - Software Qualitätsmanagement ohne Schmerzen
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 

10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen

  • 1. 5 SECURITY THINGS TO DO AS A DEVELOPER Dietrich Rordorf
  • 2. Security in 15 Minuten erklärt?? Geht nicht. !
  • 3. GEDANKENEXPERIMENT Mein Kunde möchte die Sicherheit seiner Web Applikation erhöhen. Sein knappes Budget gibt nur 10 Stunden her. Was mache ich? 10h
  • 4. Zunächst mein Vorschlag Anstatt Q&A à Eure Vorschläge?
  • 6. 1 / KEINE HARDCODED SECRETS ↣ Config Dateien und Deploy-Scripte prüfen ↣ Passwörter mit ENV-Variablen ersetzen ↣ In PHP auslesen mit getenv( ) DB_HOST=localhost DB_USER=my_db_user DB_PASSWORD=my_db_password DB_APP_NAME=my_app_db $resource = new PDO( sprintf( "mysql:host=%s;dbname=%s", getenv('DB_HOST'), getenv('DB_APP_NAME') ), getenv('DB_USER'), getenv('DB_PASSWORD') ); 8h 2h
  • 7. 1 / KEINE HARDCODED SECRETS 8h ↣ Wer hat Zugriff auf mein Repo? ↣ Ist mein Repo sicher? ↣ GitHub Apps / Integrationen RATIONALE
  • 9. 2 / MYSQL HARDENING ↣ Remote-Zugriff sperren ↣ Validate Password Plugin ↣ Strenge Password Requirement Policy ↣ Alle Passwörter neu setzen ↣ Überflüssige Datenbank-Users löschen ↣ Überflüssige Privilegien entziehen 7.5h 0.5h
  • 10. 2 / MYSQL HARDENING 7.5h ↣ Datenbestand wertvollster Teil einer App ↣ Remote Schreib- oder Root-Zugriff überflüssig RATIONALE 🤑
  • 12. 3 / PHPMYADMIN HARDENING ↣ Subdomain einrichten ↣ SSL-Verbindung ↣ root Login sperren ↣ Eigener Datenbank-User einrichten für PMA (read-only) ↣ IP Ranges limitieren 6h 1.5h
  • 13. 3 / PHPMYADMIN HARDENING 6h ↣ Wir haben es alle im Einsatz ↣ Komfortabel zum Debuggen ↣ Auf prod Umgebung ein trojanisches Pferd RATIONALE 😱
  • 15. 4 / KNOWN VULNERABILITIES ↣ Moderne Apps haben Dependencies ↣ Paket-Manager: composer, npm ↣ Anfällige Pakete ↣ Dependencies-Scanner wie snyk.io ↣ Snyk GitHub-Integration: Pull Request mit Fixes für composer.json oder package.json 4h 2h
  • 16. 4 / KNOWN VULNERABILITIES 4h ↣ Attack-Vektor für Hacker bereits bekannt ↣ Paketversionen haben Signaturen oder hinterlassen „Spuren“ im HTML (speziell JS Libs im Frontend) ↣ Web App als Target identifizierbar RATIONALE
  • 18. 5 / CODE REVIEW ↣ ohne Anhaltspunkte unrealistisch ↣ OWASP Code Review Guide: 216 Seiten ↣ Lösung: Static Code Analysis ↣ SonarCloud (PHP, JS und mehr) + sonnar-scanner ↣ phpcs-security-audit 0h 4h 🙈
  • 19. 5 / CODE REVIEW 0h 4h ↣ Nach OWASP & SANS Tags filtern, Critical oder Blocker
  • 20. 5 / CODE REVIEW 0h ↣ Eigene Schwachstellen beseitigen RATIONALE
  • 21. Tag ist fertig ☕Coffee-Level ☕ ☕ 0h ☕ ☕ 🍺 🍺
  • 22. SURVEY Problem Kennen Problem nicht Kennen Problem 1 / Hardcoded Secrets 4 16 2 / MySQL Hardening 8 12 3 / PMA Hardening 7 13 4 / Known Vulnerabilities 6 14 5 / Code Review 3 17 Anzahl Devs n = 20
  • 23. DANKE ! Dietrich Rordorf GitHub github.com/rordi Work ditoy.com Side hustles ediqo.com und teacherflow.ch