Java Gotchas - Bitwise vs Boolean Operators
Java Gotchas - Bitwise vs Boolean Operators
> "Java Gotcha" - a common mistake pattern that is easy to accidentally implement.
A fairly simple Java Gotcha to accidentally fall into is: using a Bitwise operator instead of a Boolean Comparison operator.
e.g. a simple mistype can result in writing "&" when you really meant to write "&&".
A common heuristic we learn when reviewing code is:
> "&" or "|" when used in a conditional statement is probably not intended.
In this blog post, we will explore the heuristic and identify ways we can identify and fix this coding issue.
What's the Problem? Bitwise operations work fine with Booleans
Using Bitwise operators with Booleans is perfectly valid, so Java will not report a syntax error.
If I construct a JUnit Test to explore a truth table for both Bitwise OR (|) and Bitwise AND (&) then we will see that the outputs from the Bitwise operator match the truth table. Given this, we might think that the use of Bitwise operators is not an issue.
AND Truth Table

@Test
void bitwiseOperatorsAndTruthTable(){
Assertions.assertEquals(true, true & true);
Assertions.assertEquals(false, true & false);
Assertions.assertEquals(false, false & true);
Assertions.assertEquals(false, false & false);
}
The test passes, this is perfectly valid Java.
OR Truth Table

@Test
void bitwiseOperatorsOrTruthTable(){
Assertions.assertEquals(true, true | true);
Assertions.assertEquals(true, true | false);
Assertions.assertEquals(true, false | true);
Assertions.assertEquals(false, false | false);
}
This test also passes, why do we prefer "&&'and "||'?
Truth table images were created using the truth table tool from web.standfor.edu.
Issue: Short Circuit Operation
The real issue is the difference in behaviour between Bitwise (&, |) and Boolean (&&, ||) operators.
A Boolean operator is a short circuit operator and only evaluates as much as it needs to.
e.g.
if (args != null & args.length() > 23) {
System.out.println(args);
}
In the above code, both boolean conditions will evaluate, because the Bitwise operator has been used:
- args != null
- args.length() > 23
This leaves my code open to a NullPointerException if args is null because we will always perform the check for args.length, even when args is null because both boolean conditions have to be evaluated.
Boolean Operators Short Circuit Evaluation
When an && is used e.g.
if (args != null && args.length() > 23) {
System.out.println(args);
}
As soon as we know that args != null evaluates to false the condition expression evaluation stops.
We don't need to evaluate the right-hand side.
Whatever the outcome of the right-hand side condition, the final value of the Boolean expression will be false.
But this would never happen in production code
This is a pretty easy mistake to make and is not always picked up by Static Analysis tools.
I used the following Google Dork to see if I could find any public examples of this pattern:
filetype:java if "!=null & "
This search brought back some code from Android in the RootWindowContainer
isDocument = intent != null & intent.isDocument()
This is the type of code that might pass a code review because we often do use Bitwise operators in assignment statements to mask values. But in this instance, the outcome is the same as the if statement example above. If intent is ever null, then a NullPointerException will be thrown.
Very often we get away with this construct because we often code defensively and write redundant code. The check for != null may well be redundant in most use cases.
This is an error made by programmers in production code.
I don't know how current the results for the search are, but when I ran the search there were results back with code from: Google, Amazon, Apache... and me.
A recent pull request on one of my open source projects was to address exactly this error.
if(type!=null & type.trim().length()>0){
acceptMediaTypeDefinitionsList.add(type.trim());
}
How to Find This
When I checked my sample code in a few static analysers, none of them picked up this hidden self-destruct code.
As a team at Secure Code Warrior, we created and reviewed a fairly simple Sensei recipe that could pick this up.
Because Bitwise operators are perfectly valid, and often used in assignments we focussed on the use-case of if statements, and the use of Bitwise &, to find the problematic code.
search:
expression:
anyOf:
- in:
condition: {}
value:
caseSensitive: false
matches: ".* & .*"
This uses a regular expression to match " & " when it is used as a condition expression. e.g. in an if statement.
To fix it, we again relied on regular expressions. This time using the sed function in the QuickFix to globally replace the & in the expression with &&.
availableFixes:
- name: "Replace bitwise AND operator to logical AND operator"
actions:
- rewrite:
to: "{{#sed}}s/&/&&/g,{{{ . }}}{{/sed}}"
End Notes
This covers the most common misuse of a Bitwise operator, i.e. when a Boolean operator was actually intended.
There are other situations where this could crop up e.g. the assignment example, but when writing recipes we have to attempt to avoid false-positive identification, otherwise recipes will be ignored or turned off. We build recipes to match the most common occurrences. As Sensei evolves, we may well add additional specificity into the search functionality to cover more matching conditions.
In its current form, this recipe would identify many of the live use-cases, and most importantly, the one that was reported in my project.
NOTE: A fair few code warriors contributed to this example and recipe review - Charlie Eriksen, Matthieu Calie, Robin Claerhaut, Brysen Ackx, Nathan Desmet, Downey Robersscheuten. Thanks for your help.
---
You can install Sensei from within IntelliJ using "Preferences \ Plugins" (Mac) or "Settings \ Plugins" (Windows) then just search for "sensei secure code"
We have a lot of source code and recipes for these blog posts (including this one) in the `sensei-blog-examples` repository in the Secure Code Warrior GitHub account.
https://github.com/securecodewarrior/sensei-blog-examples


In this blog post we take a look at a common Java coding mistake (using a bitwise operator instead of a conditional operator), the error it makes our code vulnerable to, and how we can use Sensei to fix and detect the issue.
Alan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.

Secure Code Warrior is here for your organization to help you secure code across the entire software development lifecycle and create a culture in which cybersecurity is top of mind. Whether you’re an AppSec Manager, Developer, CISO, or anyone involved in security, we can help your organization reduce risks associated with insecure code.
Book a demoAlan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.


Java Gotchas - Bitwise vs Boolean Operators
> "Java Gotcha" - a common mistake pattern that is easy to accidentally implement.
A fairly simple Java Gotcha to accidentally fall into is: using a Bitwise operator instead of a Boolean Comparison operator.
e.g. a simple mistype can result in writing "&" when you really meant to write "&&".
A common heuristic we learn when reviewing code is:
> "&" or "|" when used in a conditional statement is probably not intended.
In this blog post, we will explore the heuristic and identify ways we can identify and fix this coding issue.
What's the Problem? Bitwise operations work fine with Booleans
Using Bitwise operators with Booleans is perfectly valid, so Java will not report a syntax error.
If I construct a JUnit Test to explore a truth table for both Bitwise OR (|) and Bitwise AND (&) then we will see that the outputs from the Bitwise operator match the truth table. Given this, we might think that the use of Bitwise operators is not an issue.
AND Truth Table

@Test
void bitwiseOperatorsAndTruthTable(){
Assertions.assertEquals(true, true & true);
Assertions.assertEquals(false, true & false);
Assertions.assertEquals(false, false & true);
Assertions.assertEquals(false, false & false);
}
The test passes, this is perfectly valid Java.
OR Truth Table

@Test
void bitwiseOperatorsOrTruthTable(){
Assertions.assertEquals(true, true | true);
Assertions.assertEquals(true, true | false);
Assertions.assertEquals(true, false | true);
Assertions.assertEquals(false, false | false);
}
This test also passes, why do we prefer "&&'and "||'?
Truth table images were created using the truth table tool from web.standfor.edu.
Issue: Short Circuit Operation
The real issue is the difference in behaviour between Bitwise (&, |) and Boolean (&&, ||) operators.
A Boolean operator is a short circuit operator and only evaluates as much as it needs to.
e.g.
if (args != null & args.length() > 23) {
System.out.println(args);
}
In the above code, both boolean conditions will evaluate, because the Bitwise operator has been used:
- args != null
- args.length() > 23
This leaves my code open to a NullPointerException if args is null because we will always perform the check for args.length, even when args is null because both boolean conditions have to be evaluated.
Boolean Operators Short Circuit Evaluation
When an && is used e.g.
if (args != null && args.length() > 23) {
System.out.println(args);
}
As soon as we know that args != null evaluates to false the condition expression evaluation stops.
We don't need to evaluate the right-hand side.
Whatever the outcome of the right-hand side condition, the final value of the Boolean expression will be false.
But this would never happen in production code
This is a pretty easy mistake to make and is not always picked up by Static Analysis tools.
I used the following Google Dork to see if I could find any public examples of this pattern:
filetype:java if "!=null & "
This search brought back some code from Android in the RootWindowContainer
isDocument = intent != null & intent.isDocument()
This is the type of code that might pass a code review because we often do use Bitwise operators in assignment statements to mask values. But in this instance, the outcome is the same as the if statement example above. If intent is ever null, then a NullPointerException will be thrown.
Very often we get away with this construct because we often code defensively and write redundant code. The check for != null may well be redundant in most use cases.
This is an error made by programmers in production code.
I don't know how current the results for the search are, but when I ran the search there were results back with code from: Google, Amazon, Apache... and me.
A recent pull request on one of my open source projects was to address exactly this error.
if(type!=null & type.trim().length()>0){
acceptMediaTypeDefinitionsList.add(type.trim());
}
How to Find This
When I checked my sample code in a few static analysers, none of them picked up this hidden self-destruct code.
As a team at Secure Code Warrior, we created and reviewed a fairly simple Sensei recipe that could pick this up.
Because Bitwise operators are perfectly valid, and often used in assignments we focussed on the use-case of if statements, and the use of Bitwise &, to find the problematic code.
search:
expression:
anyOf:
- in:
condition: {}
value:
caseSensitive: false
matches: ".* & .*"
This uses a regular expression to match " & " when it is used as a condition expression. e.g. in an if statement.
To fix it, we again relied on regular expressions. This time using the sed function in the QuickFix to globally replace the & in the expression with &&.
availableFixes:
- name: "Replace bitwise AND operator to logical AND operator"
actions:
- rewrite:
to: "{{#sed}}s/&/&&/g,{{{ . }}}{{/sed}}"
End Notes
This covers the most common misuse of a Bitwise operator, i.e. when a Boolean operator was actually intended.
There are other situations where this could crop up e.g. the assignment example, but when writing recipes we have to attempt to avoid false-positive identification, otherwise recipes will be ignored or turned off. We build recipes to match the most common occurrences. As Sensei evolves, we may well add additional specificity into the search functionality to cover more matching conditions.
In its current form, this recipe would identify many of the live use-cases, and most importantly, the one that was reported in my project.
NOTE: A fair few code warriors contributed to this example and recipe review - Charlie Eriksen, Matthieu Calie, Robin Claerhaut, Brysen Ackx, Nathan Desmet, Downey Robersscheuten. Thanks for your help.
---
You can install Sensei from within IntelliJ using "Preferences \ Plugins" (Mac) or "Settings \ Plugins" (Windows) then just search for "sensei secure code"
We have a lot of source code and recipes for these blog posts (including this one) in the `sensei-blog-examples` repository in the Secure Code Warrior GitHub account.
https://github.com/securecodewarrior/sensei-blog-examples

Java Gotchas - Bitwise vs Boolean Operators
> "Java Gotcha" - a common mistake pattern that is easy to accidentally implement.
A fairly simple Java Gotcha to accidentally fall into is: using a Bitwise operator instead of a Boolean Comparison operator.
e.g. a simple mistype can result in writing "&" when you really meant to write "&&".
A common heuristic we learn when reviewing code is:
> "&" or "|" when used in a conditional statement is probably not intended.
In this blog post, we will explore the heuristic and identify ways we can identify and fix this coding issue.
What's the Problem? Bitwise operations work fine with Booleans
Using Bitwise operators with Booleans is perfectly valid, so Java will not report a syntax error.
If I construct a JUnit Test to explore a truth table for both Bitwise OR (|) and Bitwise AND (&) then we will see that the outputs from the Bitwise operator match the truth table. Given this, we might think that the use of Bitwise operators is not an issue.
AND Truth Table

@Test
void bitwiseOperatorsAndTruthTable(){
Assertions.assertEquals(true, true & true);
Assertions.assertEquals(false, true & false);
Assertions.assertEquals(false, false & true);
Assertions.assertEquals(false, false & false);
}
The test passes, this is perfectly valid Java.
OR Truth Table

@Test
void bitwiseOperatorsOrTruthTable(){
Assertions.assertEquals(true, true | true);
Assertions.assertEquals(true, true | false);
Assertions.assertEquals(true, false | true);
Assertions.assertEquals(false, false | false);
}
This test also passes, why do we prefer "&&'and "||'?
Truth table images were created using the truth table tool from web.standfor.edu.
Issue: Short Circuit Operation
The real issue is the difference in behaviour between Bitwise (&, |) and Boolean (&&, ||) operators.
A Boolean operator is a short circuit operator and only evaluates as much as it needs to.
e.g.
if (args != null & args.length() > 23) {
System.out.println(args);
}
In the above code, both boolean conditions will evaluate, because the Bitwise operator has been used:
- args != null
- args.length() > 23
This leaves my code open to a NullPointerException if args is null because we will always perform the check for args.length, even when args is null because both boolean conditions have to be evaluated.
Boolean Operators Short Circuit Evaluation
When an && is used e.g.
if (args != null && args.length() > 23) {
System.out.println(args);
}
As soon as we know that args != null evaluates to false the condition expression evaluation stops.
We don't need to evaluate the right-hand side.
Whatever the outcome of the right-hand side condition, the final value of the Boolean expression will be false.
But this would never happen in production code
This is a pretty easy mistake to make and is not always picked up by Static Analysis tools.
I used the following Google Dork to see if I could find any public examples of this pattern:
filetype:java if "!=null & "
This search brought back some code from Android in the RootWindowContainer
isDocument = intent != null & intent.isDocument()
This is the type of code that might pass a code review because we often do use Bitwise operators in assignment statements to mask values. But in this instance, the outcome is the same as the if statement example above. If intent is ever null, then a NullPointerException will be thrown.
Very often we get away with this construct because we often code defensively and write redundant code. The check for != null may well be redundant in most use cases.
This is an error made by programmers in production code.
I don't know how current the results for the search are, but when I ran the search there were results back with code from: Google, Amazon, Apache... and me.
A recent pull request on one of my open source projects was to address exactly this error.
if(type!=null & type.trim().length()>0){
acceptMediaTypeDefinitionsList.add(type.trim());
}
How to Find This
When I checked my sample code in a few static analysers, none of them picked up this hidden self-destruct code.
As a team at Secure Code Warrior, we created and reviewed a fairly simple Sensei recipe that could pick this up.
Because Bitwise operators are perfectly valid, and often used in assignments we focussed on the use-case of if statements, and the use of Bitwise &, to find the problematic code.
search:
expression:
anyOf:
- in:
condition: {}
value:
caseSensitive: false
matches: ".* & .*"
This uses a regular expression to match " & " when it is used as a condition expression. e.g. in an if statement.
To fix it, we again relied on regular expressions. This time using the sed function in the QuickFix to globally replace the & in the expression with &&.
availableFixes:
- name: "Replace bitwise AND operator to logical AND operator"
actions:
- rewrite:
to: "{{#sed}}s/&/&&/g,{{{ . }}}{{/sed}}"
End Notes
This covers the most common misuse of a Bitwise operator, i.e. when a Boolean operator was actually intended.
There are other situations where this could crop up e.g. the assignment example, but when writing recipes we have to attempt to avoid false-positive identification, otherwise recipes will be ignored or turned off. We build recipes to match the most common occurrences. As Sensei evolves, we may well add additional specificity into the search functionality to cover more matching conditions.
In its current form, this recipe would identify many of the live use-cases, and most importantly, the one that was reported in my project.
NOTE: A fair few code warriors contributed to this example and recipe review - Charlie Eriksen, Matthieu Calie, Robin Claerhaut, Brysen Ackx, Nathan Desmet, Downey Robersscheuten. Thanks for your help.
---
You can install Sensei from within IntelliJ using "Preferences \ Plugins" (Mac) or "Settings \ Plugins" (Windows) then just search for "sensei secure code"
We have a lot of source code and recipes for these blog posts (including this one) in the `sensei-blog-examples` repository in the Secure Code Warrior GitHub account.
https://github.com/securecodewarrior/sensei-blog-examples

Click on the link below and download the PDF of this resource.
Secure Code Warrior is here for your organization to help you secure code across the entire software development lifecycle and create a culture in which cybersecurity is top of mind. Whether you’re an AppSec Manager, Developer, CISO, or anyone involved in security, we can help your organization reduce risks associated with insecure code.
View reportBook a demoAlan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.
Java Gotchas - Bitwise vs Boolean Operators
> "Java Gotcha" - a common mistake pattern that is easy to accidentally implement.
A fairly simple Java Gotcha to accidentally fall into is: using a Bitwise operator instead of a Boolean Comparison operator.
e.g. a simple mistype can result in writing "&" when you really meant to write "&&".
A common heuristic we learn when reviewing code is:
> "&" or "|" when used in a conditional statement is probably not intended.
In this blog post, we will explore the heuristic and identify ways we can identify and fix this coding issue.
What's the Problem? Bitwise operations work fine with Booleans
Using Bitwise operators with Booleans is perfectly valid, so Java will not report a syntax error.
If I construct a JUnit Test to explore a truth table for both Bitwise OR (|) and Bitwise AND (&) then we will see that the outputs from the Bitwise operator match the truth table. Given this, we might think that the use of Bitwise operators is not an issue.
AND Truth Table

@Test
void bitwiseOperatorsAndTruthTable(){
Assertions.assertEquals(true, true & true);
Assertions.assertEquals(false, true & false);
Assertions.assertEquals(false, false & true);
Assertions.assertEquals(false, false & false);
}
The test passes, this is perfectly valid Java.
OR Truth Table

@Test
void bitwiseOperatorsOrTruthTable(){
Assertions.assertEquals(true, true | true);
Assertions.assertEquals(true, true | false);
Assertions.assertEquals(true, false | true);
Assertions.assertEquals(false, false | false);
}
This test also passes, why do we prefer "&&'and "||'?
Truth table images were created using the truth table tool from web.standfor.edu.
Issue: Short Circuit Operation
The real issue is the difference in behaviour between Bitwise (&, |) and Boolean (&&, ||) operators.
A Boolean operator is a short circuit operator and only evaluates as much as it needs to.
e.g.
if (args != null & args.length() > 23) {
System.out.println(args);
}
In the above code, both boolean conditions will evaluate, because the Bitwise operator has been used:
- args != null
- args.length() > 23
This leaves my code open to a NullPointerException if args is null because we will always perform the check for args.length, even when args is null because both boolean conditions have to be evaluated.
Boolean Operators Short Circuit Evaluation
When an && is used e.g.
if (args != null && args.length() > 23) {
System.out.println(args);
}
As soon as we know that args != null evaluates to false the condition expression evaluation stops.
We don't need to evaluate the right-hand side.
Whatever the outcome of the right-hand side condition, the final value of the Boolean expression will be false.
But this would never happen in production code
This is a pretty easy mistake to make and is not always picked up by Static Analysis tools.
I used the following Google Dork to see if I could find any public examples of this pattern:
filetype:java if "!=null & "
This search brought back some code from Android in the RootWindowContainer
isDocument = intent != null & intent.isDocument()
This is the type of code that might pass a code review because we often do use Bitwise operators in assignment statements to mask values. But in this instance, the outcome is the same as the if statement example above. If intent is ever null, then a NullPointerException will be thrown.
Very often we get away with this construct because we often code defensively and write redundant code. The check for != null may well be redundant in most use cases.
This is an error made by programmers in production code.
I don't know how current the results for the search are, but when I ran the search there were results back with code from: Google, Amazon, Apache... and me.
A recent pull request on one of my open source projects was to address exactly this error.
if(type!=null & type.trim().length()>0){
acceptMediaTypeDefinitionsList.add(type.trim());
}
How to Find This
When I checked my sample code in a few static analysers, none of them picked up this hidden self-destruct code.
As a team at Secure Code Warrior, we created and reviewed a fairly simple Sensei recipe that could pick this up.
Because Bitwise operators are perfectly valid, and often used in assignments we focussed on the use-case of if statements, and the use of Bitwise &, to find the problematic code.
search:
expression:
anyOf:
- in:
condition: {}
value:
caseSensitive: false
matches: ".* & .*"
This uses a regular expression to match " & " when it is used as a condition expression. e.g. in an if statement.
To fix it, we again relied on regular expressions. This time using the sed function in the QuickFix to globally replace the & in the expression with &&.
availableFixes:
- name: "Replace bitwise AND operator to logical AND operator"
actions:
- rewrite:
to: "{{#sed}}s/&/&&/g,{{{ . }}}{{/sed}}"
End Notes
This covers the most common misuse of a Bitwise operator, i.e. when a Boolean operator was actually intended.
There are other situations where this could crop up e.g. the assignment example, but when writing recipes we have to attempt to avoid false-positive identification, otherwise recipes will be ignored or turned off. We build recipes to match the most common occurrences. As Sensei evolves, we may well add additional specificity into the search functionality to cover more matching conditions.
In its current form, this recipe would identify many of the live use-cases, and most importantly, the one that was reported in my project.
NOTE: A fair few code warriors contributed to this example and recipe review - Charlie Eriksen, Matthieu Calie, Robin Claerhaut, Brysen Ackx, Nathan Desmet, Downey Robersscheuten. Thanks for your help.
---
You can install Sensei from within IntelliJ using "Preferences \ Plugins" (Mac) or "Settings \ Plugins" (Windows) then just search for "sensei secure code"
We have a lot of source code and recipes for these blog posts (including this one) in the `sensei-blog-examples` repository in the Secure Code Warrior GitHub account.
https://github.com/securecodewarrior/sensei-blog-examples
Table of contents
Alan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.

Secure Code Warrior is here for your organization to help you secure code across the entire software development lifecycle and create a culture in which cybersecurity is top of mind. Whether you’re an AppSec Manager, Developer, CISO, or anyone involved in security, we can help your organization reduce risks associated with insecure code.
Book a demoDownloadResources to get you started
Secure by Design: Defining Best Practices, Enabling Developers and Benchmarking Preventative Security Outcomes
In this research paper, Secure Code Warrior co-founders, Pieter Danhieux and Dr. Matias Madou, Ph.D., along with expert contributors, Chris Inglis, Former US National Cyber Director (now Strategic Advisor to Paladin Capital Group), and Devin Lynch, Senior Director, Paladin Global Institute, will reveal key findings from over twenty in-depth interviews with enterprise security leaders including CISOs, a VP of Application Security, and software security professionals.
Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise
Finding meaningful data on the success of Secure-by-Design initiatives is notoriously difficult. CISOs are often challenged when attempting to prove the return on investment (ROI) and business value of security program activities at both the people and company levels. Not to mention, it’s particularly difficult for enterprises to gain insights into how their organizations are benchmarked against current industry standards. The President’s National Cybersecurity Strategy challenged stakeholders to “embrace security and resilience by design.” The key to making Secure-by-Design initiatives work is not only giving developers the skills to ensure secure code, but also assuring the regulators that those skills are in place. In this presentation, we share a myriad of qualitative and quantitative data, derived from multiple primary sources, including internal data points collected from over 250,000 developers, data-driven customer insights, and public studies. Leveraging this aggregation of data points, we aim to communicate a vision of the current state of Secure-by-Design initiatives across multiple verticals. The report details why this space is currently underutilized, the significant impact a successful upskilling program can have on cybersecurity risk mitigation, and the potential to eliminate categories of vulnerabilities from a codebase.
Secure code training topics & content
Our industry-leading content is always evolving to fit the ever changing software development landscape with your role in mind. Topics covering everything from AI to XQuery Injection, offered for a variety of roles from Architects and Engineers to Product Managers and QA. Get a sneak peak of what our content catalog has to offer by topic and role.
Resources to get you started
Revealed: How the Cyber Industry Defines Secure by Design
In our latest white paper, our Co-Founders, Pieter Danhieux and Dr. Matias Madou, Ph.D., sat down with over twenty enterprise security leaders, including CISOs, AppSec leaders and security professionals, to figure out the key pieces of this puzzle and uncover the reality behind the Secure by Design movement. It’s a shared ambition across the security teams, but no shared playbook.
Is Vibe Coding Going to Turn Your Codebase Into a Frat Party?
Vibe coding is like a college frat party, and AI is the centerpiece of all the festivities, the keg. It’s a lot of fun to let loose, get creative, and see where your imagination can take you, but after a few keg stands, drinking (or, using AI) in moderation is undoubtedly the safer long-term solution.