Bird
Raised Fist0
Rest APIprogramming~10 mins

Why API security is non-negotiable in Rest API - Test Your Understanding

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to add an API key check in the request headers.

Rest API
if request.headers.get('[1]') != 'my_secret_key':
    return {'error': 'Unauthorized'}, 401
Drag options to blanks, or click blank then click option'
AApi-Key
BAuthorization
CContent-Type
DUser-Agent
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Authorization' or 'Content-Type' instead of 'Api-Key'.
2fill in blank
medium

Complete the code to enforce HTTPS for API requests.

Rest API
if not request.url.startswith('[1]'):
    return {'error': 'Use HTTPS'}, 403
Drag options to blanks, or click blank then click option'
Aws://
Bhttps://
Cftp://
Dhttp://
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'http://' which is not secure.
3fill in blank
hard

Fix the error in the code to correctly parse JSON data from the API request.

Rest API
data = request.[1]()
Drag options to blanks, or click blank then click option'
Aparse_json
Bjson
Cjsonify
Dget_json
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'json' which is an attribute, not a method.
Using 'jsonify' which is for creating JSON responses.
4fill in blank
hard

Fill both blanks to create a rate limiter that allows 100 requests per minute.

Rest API
limiter = RateLimiter([1]=100, [2]=60)
Drag options to blanks, or click blank then click option'
Amax_requests
Bduration
Cinterval
Dlimit
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing 'duration' with 'interval'.
Using 'limit' instead of 'max_requests'.
5fill in blank
hard

Fill all three blanks to create a secure API endpoint that requires authentication and returns JSON.

Rest API
@app.route('/data')
@[1]
def get_data():
    data = fetch_data()
    return [2](data), [3]
Drag options to blanks, or click blank then click option'
Alogin_required
Bjsonify
C200
Dauthenticate
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'authenticate' instead of a decorator.
Returning raw data without 'jsonify'.

Practice

(1/5)
1. Why is API security considered non-negotiable in software development?
easy
A. It reduces the size of the API response.
B. It makes the API run faster.
C. It protects sensitive data and prevents unauthorized access.
D. It allows unlimited access to everyone.

Solution

  1. Step 1: Understand the purpose of API security

    API security is designed to protect sensitive data and control who can access the API.
  2. Step 2: Analyze the options

    Only It protects sensitive data and prevents unauthorized access. mentions protection and preventing unauthorized access, which is the main goal of API security.
  3. Final Answer:

    It protects sensitive data and prevents unauthorized access. -> Option C
  4. Quick Check:

    API security = protect data and access [OK]
Hint: Remember: security means protecting data and access [OK]
Common Mistakes:
  • Thinking security speeds up API
  • Confusing security with data size
  • Assuming open access is secure
2. Which of the following is the correct way to secure an API endpoint?
easy
A. Require an API key or token for access.
B. Use HTTP instead of HTTPS for faster connection.
C. Allow all IP addresses without restrictions.
D. Send sensitive data in URL parameters.

Solution

  1. Step 1: Identify secure practices for API endpoints

    Using API keys or tokens is a standard way to control access to APIs.
  2. Step 2: Evaluate each option

    Require an API key or token for access. requires keys or tokens, which is correct. Options A, C, and D are insecure practices.
  3. Final Answer:

    Require an API key or token for access. -> Option A
  4. Quick Check:

    API security = keys or tokens [OK]
Hint: Always require keys or tokens to secure APIs [OK]
Common Mistakes:
  • Using HTTP instead of HTTPS
  • Allowing unrestricted IP access
  • Exposing sensitive data in URLs
3. Consider this code snippet for an API call:
fetch('https://api.example.com/data', {
  headers: { 'Authorization': 'Bearer abc123' }
})
.then(response => response.json())
.then(data => console.log(data));
What is the main purpose of the 'Authorization' header here?
medium
A. To provide a token proving the caller's identity.
B. To encrypt the data sent to the API.
C. To set the API response timeout.
D. To specify the data format expected.

Solution

  1. Step 1: Understand the 'Authorization' header role

    The 'Authorization' header carries credentials like tokens to prove who is calling the API.
  2. Step 2: Match the header purpose with options

    To provide a token proving the caller's identity. correctly states it provides a token for identity verification. Other options describe unrelated functions.
  3. Final Answer:

    To provide a token proving the caller's identity. -> Option A
  4. Quick Check:

    Authorization header = token for identity [OK]
Hint: Authorization header carries tokens for access [OK]
Common Mistakes:
  • Confusing authorization with data format
  • Thinking it sets timeout
  • Assuming it encrypts data
4. You have this API security code snippet:
app.get('/user', (req, res) => {
  if (!req.headers['api_key']) {
    res.status(401).send('Unauthorized');
    return;
  }
  res.send('User data');
});
What is the main problem with this code?
medium
A. It does not handle errors properly.
B. It uses the wrong HTTP method for security.
C. It sends user data before checking the key.
D. It does not check if the API key is valid.

Solution

  1. Step 1: Analyze the API key check

    The code only checks if the 'api_key' header exists but does not verify if it is correct or valid.
  2. Step 2: Understand the security implication

    Without validating the key, anyone sending any 'api_key' header can access the data, which is insecure.
  3. Final Answer:

    It does not check if the API key is valid. -> Option D
  4. Quick Check:

    API key must be validated, not just present [OK]
Hint: Check key validity, not just presence [OK]
Common Mistakes:
  • Assuming presence means valid
  • Confusing HTTP method with security
  • Ignoring error handling importance
5. You want to secure an API that returns user profiles. Which combination of methods best ensures security and privacy?
hard
A. Allow all requests but log IP addresses for later review.
B. Use HTTPS, require API tokens, and validate user permissions before sending data.
C. Send user data over HTTP with a simple password in the URL.
D. Use HTTP and require no authentication for faster access.

Solution

  1. Step 1: Identify secure transport and authentication

    HTTPS encrypts data in transit, API tokens verify caller identity, and permission checks protect privacy.
  2. Step 2: Compare options for best security practice

    Use HTTPS, require API tokens, and validate user permissions before sending data. combines encryption, authentication, and authorization, which is the best approach. Others are insecure or incomplete.
  3. Final Answer:

    Use HTTPS, require API tokens, and validate user permissions before sending data. -> Option B
  4. Quick Check:

    HTTPS + tokens + permissions = secure API [OK]
Hint: Combine HTTPS, tokens, and permission checks [OK]
Common Mistakes:
  • Ignoring encryption with HTTP
  • Skipping authentication
  • Not checking user permissions