How to avoid writing insecure code
What you'll learn
- The recurring security pitfalls that developers fall into
- Manageable and practical root causes of many famous software weaknesses
- Ability to map security bugs to specific coding patterns in your software
- Reflexive security questions you should ask during coding
- Familiarity with famous security bugs; XXE, Session Puzzling, Mass Assignment, XSS, Directory Traversal, IDOR and more
- Secure and insecure ways of validating the input
- Intermediate knowledge of coding
- Basic understanding of writing HTTP-based applications
- No to little knowledge of security bugs
This training is about writing secure software. We chose to deliver secure coding practices using a perspective where widespread coding security mistakes are classified into understandable chunks. We hope that this will make more sense and be more helpful to hardcore developers and analysts.
Security should be an intrinsic part of any software production methodology and its implementation. However, development is a complex process and it is extremely hard to keep a software secure as it ages. There are numerous security tools, methodologies and knowledge to produce a secure software. However, still vast number of applications include critical security bugs. Most of these bugs stem from bad coding patterns that we call software security anti-patterns or in simpler term, mistakes.
An anti-pattern is a common response to a recurring problem that is usually ineffective or worse carry risks. In simpler words, anti-patterns are commonly reinvented bad solutions to problems.
For example, one of the famous anti-patterns in software development is Spaghetti Code. In early phases of being a developer, we are usually not familiar with the importance of modularity or find little time to design first. So, we tend produce extremely complicated, hard to understand unstructured software. This way of coding produces Spaghetti Code but the end product application still may run and serve in production. However, it is extremely hard to adapt to new changes. Because since the code is not modular or structured, it is hard to add new features. Moreover, any change in the code effects other flows in an unpredictable manner. The maintenance is also crippled. Since the code’s complicated form will make the life of new developers’ difficult when they are adjusting.
Similarly, there are bad design or coding choices that repeatedly lead to security bugs. It is important to be aware of these software security anti-patterns in order not to fall prey to hackers. The course will contain eight different core mistakes. Some are more prevalent than the others, however, all of them produce deadly results. In each lesson, we will first try to explain what the specific anti-pattern is all about. Then, we will move on giving one or more demos on what can go wrong when that mistake is made. At the end of each lesson, we will look at different sound and widely acknowledged solutions against insecure design or coding choices.
Who this course is for:
- Software developers
- Software analysts