REST API Testing Guide
REST API Testing Guide
Content
REST vs SOAP.................................................................................................................. 4
What Kind of Web Vulnerabilities Can You Find With Fuzzing .............................. 10
Page 2/12
What Is a REST API?
REST (Representational State Transfer) is a highly popular web API type because it offers
flexible, fast, and simple communication between RESTful web applications. Compared to
other API formats, REST is by far the most used, as over 80% of public web APIs are RESTful.
Although stateful REST APIs are theoretically compatible with any protocol or data format,
they mostly communicate through HTTP, using JSON, XLT, HTML, XML, or simple text. Out
of these data formats, JSON is the most common as it is compatible with most languages.
Their adaptability makes REST APIs especially useful for services that are growing in
complexity. Thanks to their ability to process commands from multiple users and different
data formats, REST APIs are highly popular in various industries, such as ecommerce or IoT.
Page 3/12
REST vs SOAP
The main difference between REST and SOAP (Simple Object Access Protocol) is that to be
RESTful, an API has to simply meet a specific set of characteristics. Meanwhile, SOAP is an
actual protocol, built to enable applications to communicate across languages and
platforms. REST APIs are generally seen as more flexible and faster than SOAP protocols.
Although SOAP protocols slightly decrease the speed of web services, they provide several
features such as improved security, atomicity, consistency isolation, and durability (ACID).
SOAP interfaces can process multiple protocol types (HTTP, SMTP TCP, etc.). However,
SOAP return messages are always sent in XML. Thus, while REST APIs enable flexible high-
speed communication, SOAP web services are slightly slower, but offer more built-in
functionality.
REST vs gRPC
gRPC (Remote Procedure Call) is a Google-developed open-source data interchange
mechanism that uses the HTTP/2 protocol. gRPC APIs exchange data using the Protocol
Buffers binary format (Protobuf), which imposes standards that developers must follow
when creating or using gRPC web APIs. While REST APIs are mainly useful for microservice
architectures and third-party apps, gRPC is often applied in IoT systems, browserless mobile
apps and applications with multiplexed streams.
Page 4/12
Unit Testing: Testing the functionality of individual operations
Integration Testing: Testing the interaction between multiple software modules
Functional Testing: Ensuring that REST APIs behave exactly as it should
Load Testing: Measuring how many calls REST APIs can handle
Reliability Testing: Ensuring that REST APIs produce consistent results and connections
Security Testing: Validating REST API encryption methods and access control
Page 5/12
1. Securing REST API Parameter Combinations
As presented below, REST APIs consist of various parameters such as request method,
request URI and query parameter - just to name a few. These parameters can take up
countless combinations that have to be tested, as specific parameter combinations can lead
to erroneous program states.
Page 6/12
4. Testing REST API Call Sequences
Testers need to ensure that REST API calls are called in the correct order to prevent errors. In
REST APIs this is especially important since they are generally multithreaded.
Page 7/12
System Complexity: REST APIs and backend services are often integrated into a layered
architecture, which makes it difficult to cover all relevant test cases. Automated API test
tools enable developers to deal with this complexity by identifying endpoints and testing
relevant parameter combinations more efficiently than it would be possible with manual
testing methods.
Missing GUI: Since REST APIs do not have a GUI, all REST API tests must be performed at
the message level, making it even more difficult for developers to conduct manual tests. In
many cases, it is easier for an API tester to write a script that automates tests than it would
be to write them manually.
Structured Inputs/Outputs: REST APIs generally underlie highly standardized protocols that
mainly process HTTP, JSON, and XML files. Therefore, they provide a fairly stable and
uniform interface to the tested program. Since the structure of the inputs and outputs are
partly predefined, automating REST API tests is usually a viable option.
Automated API testing tools will save you time and increase the functionality, reliability, and
security of your application. So, automate your testing if you can! But, don’t avoid manual
testing completely. Your team should always be able to run manual tests, to validate if the
automated tests are still working, as they are supposed to. As always, you need to find the
mix that fits your use case best.
Although these black-box approaches are somewhat automated, they leave plenty of room
for improvement, as they still require testers to have prior knowledge about the system under
test in order to be effective. Black-box tests are great to test APIs from an attacker's
perspective. They generate test inputs randomly, from static corpora, from OpenAPI imports,
or based on heuristics.
Page 8/12
However, such inputs often fail to reach complex vulnerabilities and edge cases, since they
do not take code coverage into account. For example, a black-box testing tool would take
the API request from above and try out countless different parameter settings in hopes of
identifying a request that breaks something.
Automated white-box testing is far more effective at finding buggy REST API requests: Since
they use information about the source code, white-box approaches can automatically
exclude irrelevant parameter settings from the corpus. Through information about code
coverage, they can find crashing REST API requests much faster and much more accurately.
White-box automation also enables better reporting by providing code-coverage visibility.
The advantages of this approach are especially useful to secure vast microservice
environments that are connected through APIs, and projects that are expanding in size.
Page 9/12
Show Me Some Code
In this recorded live coding session, I will demonstrate how to use fuzzing to automate your
security testing for REST APIs, on an intentionally insecure web application (WebGoat) that is
usually used for educational purposes.
Use Case: How to Automate Your REST API Testing in 5 Easy Steps
Click below to watch the full live coding session on YouTube:
https://youtu.be/Pyf04VPO0GE
Page 10/12
Category Reference Severity
Page 11/12
How to Get Started With REST API Testing
I hope you now have a broad overview of REST API testing and the different approaches to it. If
you are curious about how fuzz testing can help you build more secure web apps, you can
always reach out to me via oss-security@code-intelligence.com, or book a demo with one of
my colleagues. We will help you find the right API Testing approach, that fits your purposes.
Book a Demo
About Me
Hi, I'm Daniel Teuchert, a Senior Security Engineer at Code
Intelligence. As part member of our customer success team, I support
dev teams in automating their security testing, and implementing
modern fuzzing. I hold a master's diploma in IT Security in addition to
OSWE and OSCP offensive security certifications.
Imprint
Code Intelligence
Rheinwerkallee 6
53227 Bonn, Germany
Get in Touch
info@code-intelligence.com
Follow Us
Page 12/12