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 Cheat Sheet Series"

From OWASP
Jump to: navigation, search
m (Add update of the Password Storage CS)
m (Update roadmap to add work in progress for Argon2 proposal using PHP)
Line 143: Line 143:
 
** '''Action:''' Add a POC in order to provide actionable code about Argon2 usage.
 
** '''Action:''' Add a POC in order to provide actionable code about Argon2 usage.
 
** '''People in charge:''' Dominique Righetto.
 
** '''People in charge:''' Dominique Righetto.
** '''Status:''' <span style="background:#008000;color:#ffffff">Work in progress</span>.
+
** '''Status:''' <span style="background:#008000;color:#ffffff">Work in progress for proposal using PHP</span>.
 
* [[OS_Command_Injection_Defense_Cheat_Sheet|OS Command Injection Defense]] CS:
 
* [[OS_Command_Injection_Defense_Cheat_Sheet|OS Command Injection Defense]] CS:
 
** '''Action:''' Add information about system command escaping.
 
** '''Action:''' Add information about system command escaping.

Revision as of 17:48, 18 February 2018

Lab big.jpg
Cheatsheets-header.jpg

The OWASP Cheat Sheet Series was created to provide a concise collection of high value information on specific web application security topics. These cheat sheets were created by various application security professionals who have expertise in specific topics. We hope that the OWASP Cheat Sheet Series provides you with excellent security guidance in an easy to read format.

If you have any questions about the OWASP Cheat Sheet Series, please email the project leader Jim Manico or subscribe to our project email list.

Authors

Project Leaders: Jim Manico and Dominique Righetto @ Contributors: Paweł Krawczyk, Mishra Dhiraj, Shruti Kulkarni, Torsten Gigler, Michael Coates, Jeff Williams, Dave Wichers, Kevin Wall, Jeffrey Walton, Eric Sheridan, Kevin Kenan, David Rook, Fred Donovan, Abraham Kang, Dave Ferguson, Shreeraj Shah, Raul Siles, Colin Watson, Neil Matatall, Zaur Molotnikov and many more!

OWASP Cheat Sheets

Quick Access

OWASP Cheatsheet Series Book : April 2015 PDF download.

Email List

Project Email List

Licensing

The OWASP Cheat Sheet Series is free to use under the Creative Commons ShareAlike 3 License.

Related Projects

News and Events

Classifications

Owasp-labs-trans-85.png Owasp-builders-small.png
Owasp-defenders-small.png
Cc-button-y-sa-small.png
Project Type Files DOC.jpg

Authentication

Ensure all entities go through an appropriate and adequate form of authentication. All the application non-public resource must be protected and shouldn't be bypassed.

For more information, check Authentication Cheat Sheet

Session Management

Use secure session management practices that ensure that authenticated users have a robust and cryptographically secure association with their session.

For more information, check Session Management Cheat Sheet

Access Control

Ensure that a user has access only to the resources they are entitled to. Perform access control checks on the server side on every request. All user-controlled parameters should be validated for entitlemens checks. Check if user name or role name is passed through the URL or through hidden variables. Prepare an ACL containing the Role-to-Function mapping and validate if the users are granted access as per the ACL.

For more information, check Access Control Cheat Sheet

Input Validation

Input validation is performed to minimize malformed data from entering the system. Input Validation is NOT the primary method of preventing XSS, SQL Injection. These are covered in output encoding below.

For more information, check Input Validation Cheat Sheet

Output Encoding

Output encoding is the primary method of preventing XSS and injection attacks. Input validation helps minimize the introduction of malformed data, but it is a secondary control.

For more information, check XSS (Cross Site Scripting) Prevention Cheat Sheet.

Cross Domain

Ensure that adequate controls are present to prevent against Cross-site Request Forgery, Clickjacking and other 3rd Party Malicious scripts.

For more information, check Cross Site Request Forgery

Secure Transmission

Ensure that all the applications pages are served over cryptographically secure HTTPs protocols. Prohibit the transmission of session cookies over HTTP.

For more information, check Transport Protection Cheat Sheet

Logging

Ensure that all the security related events are logged. Events include: User log-in (success/fail); view; update; create, delete, file upload/download, attempt to access through URL, URL tampering. Audit logs should be immutable and write only and must be protected from unauthorized access.

For more information, check Logging Cheat Sheet

Uploads

Ensure that the size, type, contents and name of the uploaded files are validated. Uploaded files must not be accessible to users by direct browsing. Preferably store all the uploaded files in a different file server/drive on the server. All files must be virus scanned using a regularly updated scanner.

Global:

  • Bring all cheat sheets out of draft.
  • Go through the cheat sheets to make sure what they recommend is consistent with ASVS.
  • Move all code snippets of CS from pre tag to syntaxhighlight tag to enhance CS readability.
  • Find a way to automate the generation of a PDF referential file gathering all CS.
  • Go through the cheat sheets to make sure they follow the CS guideline.
  • Create a Slack or Discord exchange area for the community.
  • Create branding stickers for the project.


Next work on Cheat Sheets (CS) and work assignment:

  • Server Side Request Forgery Defense CS:
    • Action: Create it.
    • People in charge: Dominique Righetto.
    • Status: In backlog.
  • Forgot Password CS:
    • Action: Add a POC in order to provide actionable code.
    • People in charge: Dominique Righetto.
    • Status: In backlog.
  • Password Storage CS:
    • Action: Add a POC in order to provide actionable code about Argon2 usage.
    • People in charge: Dominique Righetto.
    • Status: Work in progress for proposal using PHP.
  • OS Command Injection Defense CS:
    • Action: Add information about system command escaping.
    • People in charge: Dominique Righetto.
    • Status: In backlog.
  • Ruby On Rails CS:
    • Action: CS complete refactoring.
    • People in charge: Zaur Molotnikov.
    • Status: Work in progress.


Cheat sheet content

The key points that all cheat sheets (called CS) must provides are the following:

  1. Address a single topic (ex: password storage, OS command injection, REST service, CSRF, HTML5 new features security...).
  2. Be concise and focused: A cheat sheet must be directly actionable (a CS is not a guide) and must be directly useful for a developer.
  3. Do not re-address topic handled by others CS. In this case, the target CS will be enhanced with missing points.
  4. When applicable, provide a solution proposal implementation through a full documented POC on a public well know Git repository (GitHub is highly prefered), the POC can be used as a playground for a developer wanting to play/evaluate your solution proposal.

Cheat sheet structure

A CS must have these sections:

  1. Introduction: Provide high level information about the topic in order to introduce it to people that do not know it. You can add pointer to external sources if needed but at least give an overview allowing a reader to continue on the CS. You can also add schema or diagram in any part of the CS but be sure to respect the copyright of the source file.
  2. Context: Describe the security issues that are bring or commonly meet when someone must work on this topic.
  3. Objective: Describe the objective of the CS. What the CS will bring to the reader?
  4. Proposition:
    1. Describe how to address the security issues in a possible technology agnostic approach.
    2. Using your POC, describe your solution proposal in the more teaching possible way.
  5. Sources of the prototype: Add pointer to the public GitHub repository on which the source code of POC is hosted.


For the code snippet, use the mediawiki tag syntaxhighlight:


If you want to be careful in order to prevent to break something in the target existing CS, you can follow this contribution procedure:

  1. Take a copy of the CS that you want to enhance (mediawiki syntax in the source tab).
  2. Add your enhancement and publish the updated CS on the same GitHub repository than your POC (it support the mediawiki syntax).
  3. Notify the CS Community using this mailing list and the CS Community will review the CS using GitHub comments system.
  4. When the feedback loop is finished, the CS Community will help you to have right access to the wiki in order to update the CS.

Cheat sheet template

If the target CS is a new one then please use the following template struture.

It allow you to work:

  • Online by using the wiki Show preview option.
  • Offline by using an text editor like Atom with the mediawiki plugin.
__NOTOC__
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:Cheatsheets-header.jpg|link=]]</div>

{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
| valign="top" style="border-right: 1px dotted gray;padding-right:25px;" |
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''

__TOC__{{TOC hidden}}

= Introduction =

<pre>
Provide high level information about the topic in order to introduce it to people that do not know it.
You can add pointer to external sources if needed but at least give an overview allowing a reader to continue on the CS.
You can also add schema or diagram in any part of the CS but be sure to respect the copyright of the source file.
</pre>

= Context =

<pre>
Describe the security issues that are bring or commonly meet when someone must work on this topic.
</pre>

= Objective =

<pre>
Describe the objective of the CS.
What the CS will bring to the reader.
</pre>

= Proposition =

<pre>
1. Describe how to address the security issues in a possible technology agnostic approach.
2. Using your POC, describe your solution proposal in the more teaching possible way. Use "syntaxhighlight" tag for code snippet.
</pre>

= Sources of the prototype =

<pre>
Add pointer to the public GitHub repository on which the source code of POC is hosted.
</pre>

= Authors and Primary Editors =

<pre>
Add your name and email.
</pre>

= Other Cheatsheets =

{{Cheatsheet_Navigation_Body}}

|}

[[Category:Cheatsheets]]