The document discusses the evolution of web applications from traditional to modern architectures. It e/slideshow/web-apps-apis-nightmare/262279758/xplains how traditional web apps involved separate files (HTML, CSS, JS) retrieved through individual HTTP requests, while modern apps retrieve all code in a single bundle and make additional requests to APIs. It also covers how mobile, IoT and other connected apps interact through APIs instead of web pages. Finally, it lists the OWASP API Security Top 10 risks and provides additional resources on secure API development.
1 of 48
More Related Content
Web Apps: APIs/slideshow/web-apps-apis-nightmare/262279758/x27; Nightmare
2. ¡ñ Security Researcher/Pentester
¡ñ 15+ years as a Software Developer
¡ñ Long-term OWASP Volunteer
¡ñ Strong believer in spreading security awareness
Who Am I
Paulo Silva
@pauloasilva_com
/devpauloasilva
paulo@char49.com
Web Apps: APIs¡¯ Nightmare
7. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
HTTP PHP
Database
scripts
main.js
. . .
style
display.js
. . .
images
background.js
. . .
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
login.php
. . .
8. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
HTTP PHP
Database
scripts
main.js
. . .
style
display.js
. . .
images
background.js
. . .
GET /scripts/main.js
Content-Type: application/javascript
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
login.php
. . .
9. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
HTTP PHP
Database
scripts
main.js
. . .
style
display.js
. . .
images
background.js
. . .
GET /style/display.css
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/css
GET /scripts/main.js
Content-Type: application/javascript
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
login.php
. . .
10. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
HTTP PHP
Database
scripts
main.js
. . .
style
display.js
. . .
images
background.js
. . .
GET /style/display.css
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/css
...
GET /scripts/main.js
Content-Type: application/javascript
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
login.php
. . .
11. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
HTTP PHP
Database
scripts
main.js
. . .
style
display.js
. . .
images
background.js
. . .
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
. . .
...
GET /login.php
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
GET /style/display.css
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/css
GET /scripts/main.js
Content-Type: application/javascript
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
login.php
. . .
12. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
HTTP PHP
Database
scripts
main.js
. . .
style
display.js
. . .
images
background.js
. . .
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
. . .
...
GET /login.php
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
GET /style/display.css
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/css
GET /scripts/main.js
Content-Type: application/javascript
php
inde/slideshow/web-apps-apis-nightmare/262279758/x.php
login.php
. . .
POST /login.php
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
14. Web Apps: APIs¡¯ Nightmare
Mobile Applications
Client Server
POST /login
Content-Type: application/json
HTTP PHP
Database
. . .
php
auth.php
users.php
posts.php
comments.php
. . .
15. Web Apps: APIs¡¯ Nightmare
Mobile Applications
Client Server
POST /login
Content-Type: application/json
HTTP PHP
Database
GET /users/me
Content-Type: application/json
. . .
php
auth.php
users.php
posts.php
comments.php
. . .
Mobile Applications
16. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
POST /login
Content-Type: application/json
HTTP PHP
Database
. . .
php
auth.php
users.php
GET /users/me
Content-Type: application/json
GET /posts/
Content-Type: application/json
posts.php
comments.php
. . .
Mobile Applications
17. Web Apps: APIs¡¯ Nightmare
Client Server
POST /login
Content-Type: application/json
HTTP PHP
Database
. . .
php
auth.php
users.php
GET /users/me
Content-Type: application/json
GET /posts/
Content-Type: application/json
posts.php
comments.php
...
. . .
Mobile Applications
20. Web Apps: APIs¡¯ Nightmare
Connected Things
Client Server
GET /device/config
Content-Type: application/json
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
21. Web Apps: APIs¡¯ Nightmare
Client Server
GET /device/config
Content-Type: application/json
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
POST /device/auth
Content-Type: application/json
Internet of Things
Connected Things
22. Web Apps: APIs¡¯ Nightmare
Traditional Web Applications
Client Server
GET /device/config
Content-Type: application/json
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
POST /device/auth
Content-Type: application/json
POST /location
Content-Type: application/json
Internet of Things
Connected Things
23. Web Apps: APIs¡¯ Nightmare
Client Server
GET /device/config
Content-Type: application/json
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
POST /device/auth
Content-Type: application/json
POST /location
Content-Type: application/json
...
Connected Things
24. Web Apps: APIs¡¯ Nightmare
Modern Web Applications
Client Server
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
public
inde/slideshow/web-apps-apis-nightmare/262279758/x.html
bundle.js
...
25. Web Apps: APIs¡¯ Nightmare
Client Server
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
public
inde/slideshow/web-apps-apis-nightmare/262279758/x.html
bundle.js
...
GET /bundle.js
Content-Type: application/javascript
Modern Web Applications
26. Web Apps: APIs¡¯ Nightmare
Client Server
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
public
inde/slideshow/web-apps-apis-nightmare/262279758/x.html
bundle.js
...
GET /bundle.js
Content-Type: application/javascript
POST /login
Content-Type: application/json
Modern Web Applications
27. Web Apps: APIs¡¯ Nightmare
Client Server
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
public
inde/slideshow/web-apps-apis-nightmare/262279758/x.html
bundle.js
...
GET /bundle.js
Content-Type: application/javascript
POST /login
Content-Type: application/json
...
Modern Web Applications
GET /places/1234
Content-Type: application/json
28. Web Apps: APIs¡¯ Nightmare
Client Server
GET /
Content-Type: te/slideshow/web-apps-apis-nightmare/262279758/xt/html
HTTP
API 1
API 2
API 3
API N
...
DB 1
DB 2
3rd
Party APIs
Service 1
Service 2
Service N
Service 3
Service 4
...
...
public
inde/slideshow/web-apps-apis-nightmare/262279758/x.html
bundle.js
...
GET /bundle.js
Content-Type: application/javascript
POST /login
Content-Type: application/json
...
Modern Web Applications
GET /places/1234
Content-Type: application/json
...
29. Web Apps: APIs¡¯ Nightmare
OWASP
API Security Top 10
API1:2023 Broken Object-Level Authorization
API2:2023 Broken Authentication
API3:2023 Broken Object Property Level Authorization
API4:2023 Unrestricted Resource Consumption
API5:2023 Broken Function-Level Authorization
API6:2023 Unrestricted Access to Sensitive Business Flows
API7:2023 Server Side Request Forgery
API8:2023 Security Misconfiguration
API9:2023 Improper Inventory Management
API10:2023 Unsafe Consumption of APIs