This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "OWASP Proactive Controls"

From OWASP
Jump to: navigation, search
(8) Leverage Security Features of Frameworks and Security Libraries)
m
Line 275: Line 275:
 
It is critical to keep these frameworks and libraries up to date as described in the [https://www.owasp.org/index.php/Top_10_2013-A9-Using_Components_with_Known_Vulnerabilities <i>using components with known vulnerabilities</i> Top Ten 2013 risk].
 
It is critical to keep these frameworks and libraries up to date as described in the [https://www.owasp.org/index.php/Top_10_2013-A9-Using_Components_with_Known_Vulnerabilities <i>using components with known vulnerabilities</i> Top Ten 2013 risk].
  
== 9) Secure Requirements TODO JIMBIRD ==
+
== 9) Security in Requirements ==
 
 
Developers will endeavor to build what is specified in well-written requirements. However, it is extremely rare when developers are presented with prescriptive technical security requirements when building applications.
 
  
 
There are three basic categories of security requirements that can be defined early-on in a software development project.  These include:
 
There are three basic categories of security requirements that can be defined early-on in a software development project.  These include:
  
1) '''Functional requirements''': A functional requirement is a visible feature within an application. A functional requirement is often defined by use-cases which includes input, behavior and output. Functional requirements can often be easily tested by Q/A staff. Security functional requirements may include re-authentication during change password, a forgot password workflow, or other visible, testable security features.
+
1) '''Security Features and Functions''': the visible application security controls for the system, including authentication, access control and auditing functions. These requirements are often defined by use-cases which include input, behavior and output, and can be tested for functional correctness by Q/A staff. Functional requirements like re-authentication during change password or a forgot password feature can be reviewed and tested by Q/A staff.  
 
 
JIM BIRD: We may want to call "Functional Requirements", "security features" instead.
 
 
 
2) '''Non functional requirements''': Non functional requirements include quality aspects to software that is often difficult to test by Q/A staff and may require deep technical expertise to evaluate. These include query parameterization, password storage and other features not always visible to users.  Other things include availability, reliability, recoverability, stability, etc.  In general functional requirements define what an application is supposed to do and non-functional requirements define how an application is supposed to be.
 
 
 
3) '''Business logic requirements''': Organizations always require functionality in web and other software that is specific to their way of operating or doing business. Business logic features are often multi-step multi-branch workflows that are difficult to evaluate throughly. These features may include a eCommerce workflow, shipping route choices, or banking transfer validation. Business logic requirements should also include requirements derived from "abuse-cases".  These abuse cases would describe how the application's functions could be subverted by attackers.  The business logic requirements should include controls that mitigate or otherwise address these risks.
 
  
JIM BIRD: Business logic requirements. Not just abuse cases but negative cases in general. What happens if a step fails or is skipped or is replayed/repeated? Just thinking about errors and edge cases will close a lot of holes, and are important for day-to-day use as well as protection from attackers.
+
2) '''Business logic abuse cases''':  Business logic features are often multi-step multi-branch workflows that are difficult to evaluate thoroughly, for example eCommerce workflows, shipping route choices, or banking transfer validation. Business logic requirements should also include failure scenarios (what happens if a step fails or if someone tries to repeat a step?) and requirements derived from "abuse-cases".  These abuse cases would describe how the application's functions could be subverted by attackers. Thinking about failures and edge cases and attack scenarios will uncover weaknesses that need to be addressed to improve the reliability and security of the system.
  
4) '''Data Classification and Privacy Requirements''': JIM BIRD: What personal and confidential information needs to be protected and tracked.
+
3) '''Data Classification and Privacy Requirements''': developers must be aware of what personal and confidential information needs to be protected and tracked. This will drive the need for access control, encryption and auditing and logging controls in the system.
  
== 10) Secure Architecture and Design TODO JIMBIRD ==
+
== 10) Security in Architecture and Design ==
  
 
Designing secure software is a strategic effort where business, technical and security stakeholders agree on both the functional and non-functional security properties of software well before it is built.  This is not an easy endeavor.
 
Designing secure software is a strategic effort where business, technical and security stakeholders agree on both the functional and non-functional security properties of software well before it is built.  This is not an easy endeavor.

Revision as of 16:59, 11 March 2014

OWASP Project Header.jpg

OWASP Proactive Controls

architecture

As software developers author the code that makes up a web application, they need to do so in a secure manner. All tiers of a web application, the user interface, the business logic, the controller, the database code and more – all need to be developed with security in mind. This can be a very difficult task and developers are often set up for failure. Most developers did not learn about secure coding or crypto in school. The languages and frameworks that developers use to build web applications are often lacking critical core controls or are insecure by default in some way. There may be inherent flaws in requirements and designs. It is also very rare when organizations provide developers with prescriptive requirements that guide them down the path of secure software. When it comes to web security, developers are often set up to lose the security game.

This document was written by developers for developers, to assist those new to secure development. It aims to guide developers and other software development professionals down the path of secure web application software development.

Licensing

The OWASP Proactive Controls document is free to use under the Creative Commons ShareAlike 3 License.

What is this?

The OWASP Proactive Controls

  • This document was written by developers for developers, to assist those new to secure development.

Email List

Project Email List

Project Leader

Project Leaders:
Jim Manico
Andrew Van Der Stock
Jim Bird

Contributors:
Stephen de Vries

Related Projects

News and Events

  • [Feb 4 2014] New Wiki Template!


Classifications

Owasp-incubator-trans-85.png Owasp-builders-small.png
Owasp-defenders-small.png
CC BY-SA 3.0 US
Project Type Files DOC.jpg