JF0x0r's Blog
PortfolioBug Hunter ProfileGithub
  • Whoami
  • Aprender Go
    • 🐺¿Qué es GO 🦊
    • 🧠Packages
    • 🎃Modules
    • 🐢Variable - Tipos de Datos
    • 🧌Operadores Matematicos - Lógicos
    • 🥥Flujo If, For, While, Switch
    • 🌼Struct - Methods vs Functions
    • 📽️POO (Programming Oriented Object)
    • 🐯Interface - Interfaces
    • 🎱Punteros * &
    • 🐸Vectores/Arrays, Slices y Maps
    • 🫀El uso de Make en channels, slices, maps
    • 🧛‍♀️Errores en Go - Uso de err ≠ nil
    • 👁️GO Defer
    • 🦷GO Panic
    • 🦋GO Recover
    • 🐦Structs
    • 🐔WaitGroups Go
  • Pentester Lab
  • Guía de Estudio Hacking
  • Bug Bounty
    • 🍓Adobe
    • 🚀Nasa VDP
    • 🧀Figma
      • 🐙User Enumeration via Authentication Flow - Email Exposure
    • 🫐Syfe
    • 🍉Etoro
    • 🥭Glance Networks
  • PortSwigger WebAcademy
    • Server Side Topics
      • SQL Injection
        • 🐔Laboratorio: Inyección SQL ciega
        • 🍫Laboratorio: Datos Ocultos - Aprendiz
        • 🦍Laboratorio: Omitir inicio de sesión Bypass
        • 🔏Laboratorio: Calcular numero Columnas con UNION
        • 🪖Laboratorio: ataque UNION de inyección SQL , búsqueda de una columna que contiene texto
        • 🐧Laboratorio: ataque UNION de inyección SQL , recuperando datos de otras tablas
        • 🧛Laboratorio: ataque UNION de inyección SQL , recuperando múltiples valores en una sola columna
        • 🐬Laboratorio: Inyección SQL con errores condicionales
        • 🐈‍⬛Laboratorio: Inyección SQL basada en errores visibles
        • 💃Laboratorio: Inyección SQL ciega con retrasos de tiempo
        • 🐆Laboratorio: Inyección SQL ciega con retardos de tiempo y recuperación de información
        • 👑Laboratorio: Inyección SQL ciega con interacción fuera de banda
        • 🏞️Laboratorio: ataque de inyección SQL, consulta del tipo y versión de la base de datos en Oracle
        • 🪻Laboratorio: ataque SQLi, consulta del tipo y versión de la base de datos en MySQL y Microsoft
        • 💀Laboratorio: ataque de inyección SQL, enumerando el contenido de la base de datos en bases de datos
        • 🧀Laboratorio: Inyección SQL con omisión de filtro mediante codificación XML
      • Authentication
        • 🐟Laboratorio: Enumeracion de usernames via diferentes responses
        • 👩‍🦽Laboratorio: enumeración de nombres de usuario a través de respuestas sutilmente diferentes
        • ™️Laboratorio: enumeración de nombres de usuario mediante tiempos de respuesta
        • 🦷Laboratorio: protección de fuerza bruta rota, bloqueo de IP
        • 🧢Laboratorio: enumeración de nombres de usuario mediante bloqueo de cuenta
        • 🦠Laboratorio: protección de fuerza bruta rota, múltiples credenciales por solicitud
        • 🐛Laboratorio: bypass simple 2FA
        • 🐯Laboratorio: lógica rota 2FA
        • 👓Laboratorio: 2FA bypass usando un ataque por fuerza bruta
        • 👽Lab: Brute-forcing a stay-logged-in cookie
        • 🦋Laboratorio: Offline password cracking
        • 🧌Laboratorio: Password reset broken logic
        • 👁️Laboratorio: Basic password reset poisoning
        • 👂Laboratorio: Password reset poisoning via middleware
        • 🥻Laboratorio: Fuerza bruta de contraseña mediante cambio de contraseña
        • 🫁Laboratorio: Envenenamiento por restablecimiento de contraseña mediante etiquetas colgantes
      • Path Traversal
        • 🛻Laboratorio: File path traversal, simple case
        • 🦅Laboratorio: File path traversal, traversal sequences blocked with absolute path bypass
        • 🦉Laboratorio: recorrido de ruta de archivo , secuencias transversales eliminadas de forma no recursiv
        • 🍊Laboratorio: File path traversal, traversal sequences stripped with superfluous URL-decode
        • 🕷️Laboratorio: File path traversal, validation of file extension with null byte bypass
      • Command Injection OS
        • 🖥️Laboratorio: OS command injection, simple case
        • 🐹Laboratorio: Blind OS command injection with time delays
        • 👹Blind OS command injection with output redirection
        • 🧛‍♂️Laboratorio: Inyección ciega de comandos del SO con exfiltración de datos fuera de banda
        • 🦟Laboratorio: Inyección ciega de comandos del sistema operativo con interacción fuera de banda
      • Business Logic Vulnerabilities
        • 🧝‍♂️Laboratorio: Confianza excesiva en los controles del lado del cliente
        • 🧙‍♂️Laboratorio: Vulnerabilidad lógica de alto nivel
        • 🤩Laboratorio: Vulnerabilidad falla lógica de bajo nivel
        • 🎻Laboratorio: Manejo inconsistente de entradas excepcionales
        • 🏓Laboratorio: Inconsistent security controls
        • 🥭Laboratorio: Aislamiento débil en terminales de doble uso
        • 🧑‍✈️Laboratorio: Validación de flujo de trabajo insuficiente
        • 📀Laboratorio: Omisión de autenticación a través de una máquina de estado defectuosa
        • 🐦‍⬛Laboratorio: Aplicación defectuosa de las reglas comerciales
        • 🌵Laboratorio: falla en la lógica del dinero infinito
        • 🥑Laboratorio: omisión de autenticación mediante Oracle de cifrado
        • 🧊Lab: Bypassing access controls using email address parsing discrepancies
      • Information Disclosure Vulnerabilities
        • 🧟Laboratorio: Divulgación de información en mensajes de error
        • 🌵Laboratorio: divulgación de información en la página de depuración
        • 🍅Laboratorio: Divulgación del código fuente a través de archivos de respaldo
        • 🤿Laboratorio: omisión de autenticación mediante divulgación de información
        • 🏑Laboratorio: Divulgación de información en el historial de control de versiones
      • SSRF - Server-Side Request Forgery
        • 🧅Laboratorio: SSRF básico frente a otro sistema back-end
        • 🐮Laboratorio: SSRF con filtro de entrada basado en lista negra
        • 🌶️Laboratorio: SSRF con filtro de entrada basado en lista blanca
        • 💽Laboratorio: SSRF with filter bypass via open redirection vulnerability
        • ☎️Laboratorio: SSRF ciega con detección fuera de banda
        • 🥬Laboratorio: SSRF ciega con explotación Shellshock
        • 🐦Laboratorio: SSRF básico contra el servidor local
      • Acess Control
        • 🍑Laboratorio: funcionalidad de administración desprotegida
        • 🍉Laboratorio: funcionalidad de administración desprotegida con URL impredecible
        • 🐱Laboratorio: rol de usuario controlado por el parámetro de solicitud
        • 🐒Laboratorio: La función del usuario se puede modificar en el perfil del usuario
        • 🐴Laboratorio: el control de acceso basado en URL se puede eludir
        • 🍋Laboratorio: El control de acceso basado en métodos se puede eludir
        • 🎾Laboratorio: ID de usuario controlado por parámetro de solicitud
        • 🧆Laboratorio: ID de usuario controlado por parámetro de solicitud, con ID de usuario impredecibles
        • 🦑Laboratorio: ID de usuario controlado por parámetro de solicitud con fuga de datos en redirección
        • 😎Laboratorio: ID de usuario controlado por parámetro de solicitud con divulgación de contraseña
        • 🍗Laboratorio: Referencias directas a objetos inseguros
        • 🧀Laboratorio: proceso de varios pasos sin control de acceso en un solo paso
        • ⛄Laboratorio: Control de acceso basado en referentes
      • File Upload Vulnerabilities
        • 🛼Laboratorio: ejecución remota de código mediante carga de shell web
        • 🥦Laboratorio: carga de shell web mediante omisión de restricción de tipo de contenido
        • ⛵Laboratorio: carga de shell web mediante recorrido de ruta
        • 🛝Laboratorio: carga de shell web mediante omisión de la lista negra de extensiones
        • ⚾Laboratorio: carga de shell web a través de una extensión de archivo ofuscada
        • 🪖Laboratorio: carga de shell web mediante condición de carrera
      • Web Cache Deception
        • 🧀Laboratorio: Explotación del mapeo de rutas para el engaño de caché web
        • 🍨Laboratorio: Explotación de delimitadores de ruta para el engaño de caché web (v2)
        • 🪇Laboratorio: Explotación de la normalización del servidor de origen para el engaño de la caché web
        • 🍺Laboratorio: Explotación de la normalización del servidor de caché para el engaño de la caché web
        • ⚽Laboratorio: Explotación de reglas de caché de coincidencia exacta para el engaño de caché web
      • API Testing
        • 🥨Laboratorio: Explotación de un punto final de API mediante documentación
        • 🛝Laboratorio: Cómo encontrar y explotar un punto final de API no utilizado
        • 🧤Laboratorio: Explotación de una vulnerabilidad de asignación masiva
        • 🍒Laboratorio: Explotación de la contaminación de parámetros del lado del servidor en una cadena de co
        • 🥕Laboratorio: Explotación de la contaminación de parámetros del lado del servidor en una URL REST
      • XXE Injection - XML Entity
        • 🏸Laboratorio: Exploiting XXE using external entities to retrieve files
        • 🥾Laboratorio: Exploiting XXE to perform SSRF attacks
        • 🧑‍🎤Laboratorio: Blind XXE with out-of-band interaction
        • 🦉Laboratorio: Blind XXE with out-of-band interaction via XML parameter entities
        • 🌋Laboratorio: Exploiting blind XXE to exfiltrate data using a malicious external DTD
        • 👾Laboratorio: Exploiting blind XXE to retrieve data via error messages
        • 🌍Laboratorio: Exploiting XXE to retrieve data by repurposing a local DTD
        • 🫀Laboratorio: Exploiting XInclude to retrieve files
        • 👁️Laboratorio: Exploiting XXE via image file upload
      • Race Conditions
        • 🗣️Mutexes Golang
        • ⛸️Laboratorio: Limit overrun race conditions
        • 👽Laboratorio: Bypassing rate limits via race conditions
        • 👩‍🦯Laboratorio: Multi-endpoint race conditions
        • 🧢Laboratorio: Single-Endpoint Race Conditions
        • 🐛Laboratorio: Partial Construction Race Condition
        • 🔩Laboratorio: Exploiting time-sensitive vulnerabilities
      • No-SQL Injection
        • 🪱Laboratorio: Detecting NoSQL injection
        • 💼Laboratorio: Exploiting NoSQL operator injection to bypass authentication
        • 🪖Laboratorio: Exploiting NoSQL injection to extract data
        • 🦺Laboratorio: Exploiting NoSQL operator injection to extract unknown fields
    • Client Side Topics
      • Cross-site scripting (XSS)
        • XSS Reflected
          • ⛑️Laboratorio: XSS reflejado en contexto HTML sin nada codificado
        • XSS Based DOM
          • 🍖Laboratorio: DOM XSS en document.write, el receptor usando la fuente location.search
        • XSS Stored
          • 🪢Laboratorio: Stored XSS into HTML context with nothing encoded
          • 🥌Laboratorio: Stored XSS into onclick event with angle brackets and double quotes HTML-encoded
    • Advanced Topics
      • 0Auth
      • Insecure Deserialization
        • 🧀Laboratorio: Modificar objetos en serie
        • 🧅Laboratorio: Modificar los tipos de datos en serie
        • 🎋Laboratorio: Usando funcionalidad de la aplicación para explotar la desserialización insegura
        • 🎯Laboratorio: Inyección arbitraria de objetos en PHP
        • 🍿Laboratorio: Inyección arbitraria de objetos en PHP
        • 🕸️Laboratorio: Exploiting Java deserialization with Apache Commons
        • 🥷Laboratorio: Exploiting PHP deserialization with a pre-built gadget chain
        • 🏈Laboratorio: Exploiting Ruby deserialization using a documented gadget chain
        • 🎄Laboratorio: Desarrollo de una cadena de gadget personalizada para la deserialización de Java
        • 👨‍🦽Laboratorio: Desarrollo una cadena de gadget personalizada para la deserialización de PHP
  • Hacking Certifications
    • ACP - APISec University
      • 🌍API Security Fundamentals 2025
      • 🫀OWASP API Security Top 10 and Beyond!
      • 🏓API Authentication
      • 🥥API Documentation Best Practices
      • 🌲Securing API Servers
Powered by GitBook
On this page
  • What types of documentation?
  • Value Of Good Documentation:
  • Top 3 Reasons Documentation is Must-Have
  • Top 2 Reasons Documentation is Nice-to-Have
  • Who writes the docs anyways?
  • Quiz:
  • Good docs matter to security
  • Good docs matter for improved governance
  • Good docs matter for partnership
  • Quiz:
  • How to Write Good Documentation
  • Let’s document a fake API together
  • Quiz:
  • Documentation Techniques and Tools
  • Quiz:
  • A few final checks before you pass this course…
  • Quiz:
  1. Hacking Certifications
  2. ACP - APISec University

API Documentation Best Practices

In simple terms, this is a human readable description of how developers will enable machines to communicate with each other. It's a mouthful, but this is my attempt to wrap up a few different things. One is documentation is for humans.

What types of documentation?

  • Reference es basicamente la del tipo de doc que es para los desarrolladores, vemos a nivel muy tecnico todo de la doc para entender como funciona, como se integra y pasar a nuestro codigo integrandolo a la DOC.

Value Of Good Documentation:

Top 3 Reasons Documentation is Must-Have

  • API Sprawl se refiere a cuando una organización tiene muchas APIs dispersas, mal organizadas, sin control ni visibilidad clara, lo cual genera caos. Es como tener un montón de puertas abiertas en una empresa… y no saber a dónde llevan ni quién las usa.

Top 2 Reasons Documentation is Nice-to-Have

Who writes the docs anyways?

Quiz:

Question 1
What’s the difference between reference docs and concept docs?
Concept docs are for feelings, references docs are for memes
Reference docs are for brief, generic ideas whereas concept docs cover list of supported data types, API specs, etc.
Reference docs are a round up API specs, list of supported data types, system requirements, etc. whereas concept docs refer to generic ideas covered briefly
Correct answer.
Only technical writers use concept docs, all others use reference docs

Question 2
Whats a good example of a Task doc?
Documentation overviewing your house projects to-do list
Documentation showing what the API is good at doing
Correct answer.
Documentation explaining word definitions or industry jargon
None of the above

Question 3
Who benefits from good documentation?
3rd party partners
Developers
End consumers
All of the above
Correct answer.

Question 4
What are Zombie APIs?
Undocumented, unmaintained APIs that become unmonitored attack vectors
Correct answer.
APIs that you make during the month of October to Celebrate Halloween
APIs that never passed their security check
Fake APIs

Question 5
What does API sprawl refer to?
The ability of APIs to take over the world
API sprawl occurs when APIs are managed by different teams in the same org without visibility into what each team is working on
Correct answer.
Proliferation of APIs across every industry, making APIs an ‘everyone’ technology and not just a concept for technology companies
Y2K 2.0

Question 6
How can bad documentation or lack thereof cause security issues?
Bad, poorly maintained, and/or non-existent documentation is an increased risk for security exposures because you need solid documentation of your APIs to maintain standardization and expose inconsistencies
Correct answer.
No docs, less locks
Hackers hate documentation
Security team members will never want to work with the API Team if they don’t have things properly documented

Question 7
What does shared leverage refer to when it comes to good documentation?
If good documentation exists, it helps convince your community your API is worthwhile
Teams with visibility to existing and upcoming APIs, increase collaboration rather than duplicated functionality and wasted effort
Correct answer.
Automated options exist, but the only sure way is to establish a source of truth, is with the goal of good documentation: a definitive Developer Portal
If everyone splits up writing the documentation, they’ll all have shared leverage in how it’s used

Question 8
Who typically writes documentation?
Developers
Technical Writers
Product Managers
Some combination of the above
Correct answer.

Question 9
Why are developers NOT always the best documentation writers?
Developers won’t work with marketing to double check everything is brand complaint
Developers will focus too much on the nitty-gritty technical details
Developers are not always good at thinking like consumers
Correct answer.
Developers don’t know how to write, only code

Question 10
What is one pro of having a Product Manager write your documentation?
They provide a customer-centric perspective that can be effective in producing a more effective developer experience
Correct answer.
They understand the product best so they can probably explain it best
They’re super cool people
They’re more likely to be brand compliant

Good docs matter to security

  • Con esto hacemos referencia a cual es el impacto positivo de documentation al negocio? to bussinesss flow →

Good docs matter for improved governance

governance (gobernanza) se refiere al conjunto de políticas, reglas, procesos y estándares que se aplican para asegurar que las APIs:

  • Que sigan convenciones de nombres, estructuras de endpoints, versionado, buenas prácticas.

  • Que incluyan autenticación, autorización, cifrado y manejo adecuado de errores.

  • Que el ciclo de vida (creación, pruebas, despliegue, deprecación) esté bien gestionado.

Good docs matter for partnership

Quiz:

Question 1
Should you run your docs through a security review?
Yes
Correct answer.
No

Question 2
Bad, poorly maintained, and/or non-existent documentation is an _______ for security exposures.
decreased risk
increased risk
Correct answer.
excellent idea
none of the above

Question 3
One weapon in your repository can be a security-style guide. This will help you:
automate the enforcement of data formats or endpoint naming conventions
utilize an enforceable security ruleset to dramatically fortify your defenses against data theft and resource exploits
Both A&B
Correct answer.
Defend against all hackers, battle bot style

Question 4
What’s one resource you can use to help maintain consistency and standardization in your documentation?
Spellcheck
A really good writer
Style Guides
Correct answer.
A yearly review of all docs

Question 5
Why does good documentation matter to potential partners?
It creates better brand affinity
It helps scale your API
It increases API adoption
All of the above
Correct answer.

Question 6
When letting devs test your documentation, what are the two most important steps to keep in mind?
The documentation is visually pleasing & includes an auth check
Any friction points & auth issues
Correct answer.
If the documentation is written in multiple languages & pretty colors
Any friction points + how familiar the developer is with the docs

Question 7
What’s another great tip to take advantage of when writing good documentation?
Let your devs try it out before you publish it
Correct answer.
Translate it into 5 different languages
Only document what part of the API you worked on directly
None of the above

How to Write Good Documentation

Let’s document a fake API together

  • twilio and stripe

Quiz:

Question 1
What is the prerequisite to generating any meaningful documentation?
An OpenAPI document
Correct answer.
A really cool pen
The most expensive documentation tool on the market
A background in writing

Question 2
What companies were used as examples of great documentation in this module?
Disney and Twilio
Stoplight and Spotlight
Twilio and Stripe
Correct answer.
Stripe and Bank of America

Question 3
What are the benefits of using a documentation generator?
Increased accuracy and less time to market
The ability to quickly create an initial reference to share
The ability to update documentation easily when the API changes
All of the above
Correct answer.

Documentation Techniques and Tools

Quiz:

Question 1
What  is one pro of using a Spec-based method to documentation?
Either Design-first minimizes duplicated effort or it creates earlier feedback loops
Correct answer.
Everyone is doing it to so it makes it easier
All of the above
None of the above

Question 2
What are some documentation tools you can use?
Excel spreadsheets, Word doc, and Gmail
Stoplight, Swaggerhub, Readme, Redocly
Correct answer.
My notepad
None of the above

Question 3
Which of these is NOT a technique you can apply to your documentation writing?
A code annotations approach
A Spec-based approach
A bespoke approach
An API-first approach
Correct answer.

A few final checks before you pass this course…

Quiz:

Question 1
What are some ways you can improve your documentation in the future?
Use inclusive language
Incorporate multimedia in the docs
Create interactive docs, not just static ones
All of the above
Correct answer.

Question 2
How can you make your docs more accessible?
Ensure your API documentation is usable by screen readers
Ensure that colors, images, and tables also include labels and alt text
Ensure that your documentation includes white space for easy scanning and navigation
All of the above
Correct answer.

Question 3
Which is better: static or interactive docs
Static
Interactive
Correct answer.
Depends on the situation
Neither

Question 4
Are you ready to write amazing documentation?
ABSOLUTELY
Correct answer.
Almost, I need to keep studying
PreviousAPI AuthenticationNextSecuring API Servers
🥥