Skip to content

Commit 3f464f9

Browse files
committed
Final proofreading
Fix typos, langauge, etc.
1 parent 7e178bc commit 3f464f9

13 files changed

+53
-49
lines changed

2019/en/src/0x00-notice.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Notice
44
This is the text version of OWASP API Security Top 10, used as source for the
55
official version distributed as a Portable Document Format (PDF).
66

7-
Contributions to the project such as comments, corrections or translations
7+
Contributions to the project such as comments, corrections, or translations
88
should be done here. For details on [How To Contribute][1], please refer to
99
[CONTRIBUTING.md][1].
1010

2019/en/src/0x02-foreword.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ become a target for attackers. Without secure APIs, rapid innovation would be
1313
impossible.
1414

1515
Although a broader web application security risks Top 10 still makes sense, due
16-
to their particular nature, an API specific security risks list is required.
16+
to their particular nature, an API-specific security risks list is required.
1717
API security focuses on strategies and solutions to understand and mitigate the
1818
unique vulnerabilities and security risks associated with APIs.
1919

2019/en/src/0x03-introduction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ architects, managers, or organizations.
2020
In the [Methodology and Data][2] section, you can read more about how this first
2121
edition was created. In future versions, we want to involve the security
2222
industry, with a public call for data. For now, we encourage everyone to
23-
contribute with questions, comments and ideas at our [GitHub repository][3] or
23+
contribute with questions, comments, and ideas at our [GitHub repository][3] or
2424
[Mailing list][4].
2525

2626
[1]: https://www.owasp.org/index.php/OWASP_API_Security_Project

2019/en/src/0x04-release-notes.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ section, you'll find more details about how this version was built. For more
1010
details about the security risks, please refer to the [API Security Risks][2]
1111
section.
1212

13-
It is important to realize that over the last few years, applications'
14-
architecture has significantly changed. Currently, APIs play a very important
13+
It is important to realize that over the last few years, architecture of
14+
applications has significantly changed. Currently, APIs play a very important
1515
role in this new architecture of microservices, Single Page Applications (SPAs),
1616
mobile apps, IoT, etc.
1717

1818
The OWASP API Security Top 10 was a required effort to create awareness about
19-
modern APIs security issues. It was only possible due to a great effort of
19+
modern API security issues. It was only possible due to a great effort of
2020
several volunteers, all of them listed in the [Acknowledgments][3] section.
2121
Thank you!
2222

2019/en/src/0x11-t10.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ OWASP Top 10 API Security Risks – 2019
1010
| API5:2019 - Broken Function Level Authorization | Complex access control policies with different hierarchies, groups, and roles, and an unclear separation between administrative and regular functions, tend to lead to authorization flaws. By exploiting these issues, attackers gain access to other users’ resources and/or administrative functions. |
1111
| API6:2019 - Mass Assignment | Binding client provided data (e.g., JSON) to data models, without proper properties filtering based on a whitelist, usually lead to Mass Assignment. Either guessing objects properties, exploring other API endpoints, reading the documentation, or providing additional object properties in request payloads, allows attackers to modify object properties they are not supposed to. |
1212
| API7:2019 - Security Misconfiguration | Security misconfiguration is commonly a result of unsecure default configurations, incomplete or ad-hoc configurations, open cloud storage, misconfigured HTTP headers, unnecessary HTTP methods, permissive Cross-Origin resource sharing (CORS), and verbose error messages containing sensitive information. |
13-
| API8:2019 - Injection | Injection flaws, such as SQL, NoSQL, Command Injection, etc. occur when untrusted data is sent to an interpreter as part of a command or query. The attacker's malicious data can trick the interpreter into executing unintended commands or accessing data without proper authorization. |
13+
| API8:2019 - Injection | Injection flaws, such as SQL, NoSQL, Command Injection, etc., occur when untrusted data is sent to an interpreter as part of a command or query. The attacker's malicious data can trick the interpreter into executing unintended commands or accessing data without proper authorization. |
1414
| API9:2019 - Improper Assets Management | APIs tend to expose more endpoints than traditional web applications, making proper and updated documentation highly important. Proper hosts and deployed API versions inventory also play an important role to mitigate issues such as deprecated API versions and exposed debug endpoints. |
1515
| API10:2019 - Insufficient Logging & Monitoring | Insufficient logging and monitoring, coupled with missing or ineffective integration with incident response, allows attackers to further attack systems, maintain persistence, pivot to more systems to tamper with, extract, or destroy data. Most breach studies demonstrate the time to detect a breach is over 200 days, typically detected by external parties rather than internal processes or monitoring. |

2019/en/src/0xa2-broken-user-authentication.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ mechanisms.
1515
An API is vulnerable if it:
1616
* Permits [credential stuffing][1] whereby the attacker has a list of valid
1717
usernames and passwords.
18-
* Permits attackers to perform a brute force attack on the same user, without
19-
presenting captcha / account lockout mechanism.
18+
* Permits attackers to perform a brute force attack on the same user account, without
19+
presenting captcha/account lockout mechanism.
2020
* Permits weak passwords.
21-
* Sends sensitive authentication details, such as auth tokens and password in
21+
* Sends sensitive authentication details, such as auth tokens and passwords in
2222
the URL.
2323
* Doesn’t validate the authenticity of tokens.
24-
* Accepts unsigned / weakly signed JWT tokens (`"alg":"none"`) / doesn’t
24+
* Accepts unsigned/weakly signed JWT tokens (`"alg":"none"`)/doesn’t
2525
validate their expiration date.
2626
* Uses plain text, encrypted, or weakly hashed passwords.
2727
* Uses weak encryption keys.
@@ -48,23 +48,23 @@ within a few minutes.
4848
## How To Prevent
4949

5050
* Make sure you know all the possible flows to authenticate to the API (mobile/
51-
web/deep links that implement one-click authentication/etc)
51+
web/deep links that implement one-click authentication/etc.)
5252
* Ask your engineers what flows you missed.
5353
* Read about your authentication mechanisms. Make sure you understand what and
54-
how they are used. OAuth is not authentication, and neither API keys .
54+
how they are used. OAuth is not authentication, and neither is API keys.
5555
* Don't reinvent the wheel in authentication, token generation, password
5656
storage. Use the standards.
57-
* Credential recovery / forget password endpoints should be treated as login
58-
endpoints in terms of brute force, rate limiting and lockout protections.
57+
* Credential recovery/forget password endpoints should be treated as login
58+
endpoints in terms of brute force, rate limiting, and lockout protections.
5959
* Use the [OWASP Authentication Cheatsheet][3]
6060
* Where possible, implement multi-factor authentication.
6161
* Implement anti brute force mechanisms to mitigate credential stuffing,
62-
dictionary attack and brute force attacks on your authentication endpoints.
63-
This mechanism should be stricter than the regular rate limiting mechanism on
62+
dictionary attack, and brute force attacks on your authentication endpoints.
63+
This mechanism should be stricter than the regular rate limiting mechanism on
6464
your API.
6565
* Implement [account lockout][4] / captcha mechanism to prevent brute force
6666
against specific users. Implement weak-password checks.
67-
* API keys should not be used for user authentication, but for [client app /
67+
* API keys should not be used for user authentication, but for [client app/
6868
project authentication][5].
6969

7070
## References

2019/en/src/0xa4-lack-of-resources-and-rate-limiting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ of the following limits is missing or set inappropriately (e.g., too low/high).
1818
* Max allocable memory
1919
* Number of file descriptors
2020
* Number of processes
21-
* Request payload size (e.g. uploads)
21+
* Request payload size (e.g., uploads)
2222
* Number of requests per client/resource
2323
* Number of records per page to return in a single request response
2424

2019/en/src/0xa7-security-misconfiguration.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ personal preferences, and authentication data.
4747

4848
Inspecting traffic of a mobile application an attacker finds out that not all
4949
HTTP traffic is performed on a secure protocol (e.g., TLS). The attacker finds
50-
this to be true, specifically for the download of profile images. As user
50+
this to be true, specifically for the download of profile images. As user
5151
interaction is binary, despite the fact that API traffic is performed on a
5252
secure protocol, the attacker finds a pattern on API responses size, which he
5353
uses to track user preferences over the rendered content (e.g., profile images).
@@ -73,7 +73,7 @@ Furthermore:
7373
schemas including error responses.
7474
* Ensure API can only be accessed by the specified HTTP verbs. All other HTTP
7575
verbs should be disabled (e.g. `HEAD`).
76-
* APIs expecting to be accessed from browser-based clients (e.g. WebApp
76+
* APIs expecting to be accessed from browser-based clients (e.g., WebApp
7777
front-end) should implement a proper Cross-Origin Resource Sharing (CORS)
7878
policy.
7979

2019/en/src/0xa9-improper-assets-management.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ The API might be vulnerable if:
3030
### Scenario #1
3131

3232
After redesigning their applications, a local search service left an old API
33-
version (`api.someservice.com/v1`) running, unprotected and with access to the
33+
version (`api.someservice.com/v1`) running, unprotected, and with access to the
3434
user database. While targeting one of the latest released applications, an
3535
attacker found the API address (`api.someservice.com/v2`). Replacing `v2` with
3636
`v1` in the URL gave the attacker access to the old, unprotected API,

2019/en/src/0xb0-next-devs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
What's Next For Developers
22
==========================
33

4-
The task to create and maintain secure software, or fixing existing ones, can be
4+
The task to create and maintain secure software, or fixing existing sofware, can be
55
difficult. APIs are no different.
66

77
We believe that education and awareness are key factors to write secure
@@ -19,7 +19,7 @@ comprehensive list of available projects.
1919
| **Security Requirements** | Security should be part of every project from the beginning. When doing requirements elicitation, it is important to define what "secure" means for that project. OWASP recommends you use the [OWASP Application Security Verification Standard (ASVS)][7] as a guide for setting the security requirements. If you're outsourcing, consider the [OWASP Secure Software Contract Annex][8], which should be adapted according to local law and regulations. |
2020
| **Security Architecture** | Security should remain a concern during all the project stages. The [OWASP Prevention Cheat Sheets][9] are a good starting point for guidance on how to design security in during the architecture phase. Among many others, you'll find the [REST Security Cheat Sheet][10] and the [REST Assessment Cheat Sheet][11]. |
2121
| **Standard Security Controls** | Adopting Standard Security Controls reduces the risk of introducing security weaknesses while writing your own logic. Despite the fact that many modern frameworks now come with built-in standard effective controls, [OWASP Proactive Controls][12] gives you a good overview of what security controls you should look to include in your project. OWASP also provides some libraries and tools you may find valuable, such as validation controls. |
22-
| **Secure Software Development Life Cycle** | You can use the [OWASP Software Assurance Maturity Model (SAMM)][13] to improve the process when building APIs. Several other OWASP projects are available to help you during the different API development phase,s e.g., the [OWASP Code Review Project][14]. |
22+
| **Secure Software Development Life Cycle** | You can use the [OWASP Software Assurance Maturity Model (SAMM)][13] to improve the process when building APIs. Several other OWASP projects are available to help you during the different API development phases e.g., the [OWASP Code Review Project][14]. |
2323

2424
[1]: https://www.owasp.org/index.php/Category:OWASP_Project
2525
[2]: https://www.owasp.org/index.php/OWASP_Education_Material_Categorized

0 commit comments

Comments
 (0)