Design af sikre RESTful-API'er
Implementer bedste praksis for sikkerhed i RESTful-API'er, herunder autentificering, autorisation, hastighedsbegrænsning og inputvalidering.
Design af sikre RESTful-API'er er en gratis Sikker kodning og OWASP Top 10 til backend-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Sikker kodning og OWASP Top 10 til backend, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Sikker kodning og OWASP Top 10 til backend-kurset indeholder 4 lektioner i alt.
API'er kræver stærk sikkerhed
RESTful API'er er rygraden i moderne applikationer, fordi de forbinder forskellige tjenester og klienter. De eksponerer din backendlogik og dine data for omverdenen, hvilket gør dem til oplagte mål for angribere.
Det er ikke valgfrit at sikre dine API'er; det er nødvendigt. En enkelt sårbarhed kan føre til datalæk, driftsforstyrrelser eller uautoriseret adgang.
Hvem er du? API-godkendelse
Godkendelse er processen med at bekræfte en klients identitet. For API'er betyder det ofte at kontrollere, om klienten har tilladelse til at sende anmodninger.
- API-nøgler: Simple hemmeligheder, der sendes sammen med anmodninger.
- Tokens (f.eks. JWT'er): Mere robuste og bruges ofte i forløb til brugergodkendelse.
- OAuth 2.0: Til delegeret autorisation (gennemgås i en anden lektion).
Brug altid stærke, unikke legitimationsoplysninger, og beskyt dem.
Brug af API-nøgler til adgang
API-nøgler er unikke identifikatorer, der bruges til at godkende et projekt eller en bruger. De sendes normalt i anmodningens header eller som en forespørgselsparameter.
Selv om de er simple, skal de behandles som adgangskoder. Hardkod dem aldrig, og tilbagekald dem straks, hvis de er kompromitteret.
Eksempel på at sende en API-nøgle:
public class ApiClient {
public static void main(String[] args) {
String apiKey = "your_secret_api_key_123";
String url = "https://api.example.com/data";
System.out.println("Sending request to: " + url);
System.out.println("With header: X-API-Key: " + apiKey);
// In a real app, you'd use HttpClient to send the request
}
}Hvad har du tilladelse til at gøre?
Efter godkendelse afgør autorisationen, hvad en godkendt klient må gøre. En godkendt bruger må måske læse data, men ikke slette dem.
- Rollebaseret adgangskontrol (RBAC): Tildeling af tilladelser baseret på roller (f.eks. 'admin' og 'user').
- Attributbaseret adgangskontrol (ABAC): Mere detaljeret kontrol ved hjælp af attributter for brugeren, ressourcen eller miljøet.
Anvend altid princippet om mindst mulige rettigheder: Giv kun den mindst mulige nødvendige adgang.
Stol aldrig på brugerinput
Alle data, der kommer ind i din API fra en ekstern kilde, skal valideres. Det omfatter forespørgselsparametre, headere og brødtekster i forespørgsler.
Grundig inputvalidering hjælper med at forhindre mange angreb, f.eks.:
- Injektionsangreb: (SQLi, Command Injection)
- Cross-Site Scripting (XSS): (Selvom det ofte foregår på klientsiden, kan backend også bidrage)
- Bufferoverløb og andre problemer med dataintegritet.
Definér strenge regler for datatyper, længde, format og tilladte værdier.
Enkelt eksempel på inputvalidering
Her er et grundlæggende Java-eksempel på validering af et brugernavn. En applikation i praksis vil have mere komplekse valideringsregler og muligvis bruge et dedikeret valideringsbibliotek.
public class InputValidator {
public static void main(String[] args) {
String username1 = "validUser123";
String username2 = "invalid user!";
String username3 = "tooLongUsernameWhichExceedsTwentyChars";
System.out.println("Validating '" + username1 + "': " + isValidUsername(username1));
System.out.println("Validating '" + username2 + "': " + isValidUsername(username2));
System.out.println("Validating '" + username3 + "': " + isValidUsername(username3));
}
public static boolean isValidUsername(String username) {
if (username == null || username.trim().isEmpty()) {
return false; // Cannot be null or empty
}
if (username.length() < 3 || username.length() > 20) {
return false; // Length check
}
// Only alphanumeric characters allowed
if (!username.matches("^[a-zA-Z0-9]+$")) {
return false;
}
return true;
}
}Styr forespørgselsflowet med hastighedsbegrænsning
Hastighedsbegrænsning begrænser antallet af forespørgsler, en klient kan sende til en API inden for et bestemt tidsrum (f.eks. 100 forespørgsler i minuttet).
Det er afgørende for:
- Forebyggelse af DoS-angreb (Denial of Service): Forhindring af, at din server overbelastes.
- Begrænsning af brute-force-angreb: På slutpunkter til godkendelse.
- Sikring af fair brug: Forhindring af, at en enkelt klient beslaglægger ressourcerne.
Når grænserne overskrides, bør API'en returnere HTTP-statuskoden 429 For mange forespørgsler.
Håndtér fejl sikkert
Den måde, din API håndterer fejl på, er et sikkerhedsspørgsmål. Detaljerede fejlmeddelelser kan utilsigtet afsløre følsomme oplysninger om din backend, f.eks. databaseskemaer, serverstier eller intern logik.
Bedste praksis:
- Generiske fejlmeddelelser: Giv overordnede, brugervenlige fejlmeddelelser.
- Log detaljer internt: Gem detaljerede fejllogge på serveren, ikke i klientsvaret.
- Undgå stacktraces: Eksponér aldrig rå stacktraces for klienter.
Brug standardiserede HTTP-statuskoder (f.eks. 400 Ugyldig forespørgsel, 401 Ikke godkendt, 403 Forbudt, 500 Intern serverfejl).
Brug altid HTTPS (TLS/SSL)
Al kommunikation med din RESTful API skal foregå via HTTPS (HTTP Secure). HTTPS krypterer de data, der udveksles mellem klienten og serveren, og beskytter dem mod aflytning, manipulation og man-in-the-middle-angreb.
Sørg for, at din server er konfigureret med gyldige TLS/SSL-certifikater, og at klienter tvinges til at bruge HTTPS (f.eks. HSTS-headere).
Dette er et grundlæggende sikkerhedslag for alle tjenester, der er tilgængelige på internettet.
Test din viden om API-sikkerhed
Hvilke af følgende er vigtige sikkerhedspraksisser ved design af RESTful API'er?
Opsummering: Design af sikre API'er
I denne lektion gennemgik vi de vigtigste principper for design af sikre RESTful API'er:
- Godkendelse: Bekræftelse af klientens identitet (f.eks. API-nøgler).
- Autorisation: Styring af, hvad godkendte klienter må gøre.
- Inputvalidering: Streng validering af alle indkommende data.
- Hastighedsbegrænsning: Forebyggelse af misbrug og DoS-angreb.
- Sikker fejlhåndtering: Undgåelse af informationslækage.
- HTTPS: Kryptering af al kommunikation.
Ved at anvende disse praksisser bygger du mere robuste og pålidelige API'er.
Lær Sikker kodning og OWASP Top 10 til backend med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Design af sikre RESTful-API'er” gratis?
Ja — alle 3 lektioner i læringssporet Sikker kodning og OWASP Top 10 til backend, inklusive “Design af sikre RESTful-API'er”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Sikker kodning og OWASP Top 10 til backend-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Design af sikre RESTful-API'er”?
Implementer bedste praksis for sikkerhed i RESTful-API'er, herunder autentificering, autorisation, hastighedsbegrænsning og inputvalidering. Du øver dig i Sikker kodning og OWASP Top 10 til backend med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Sikker kodning og OWASP Top 10 til backend?
Der kræves ingen tidligere erfaring. Sikker kodning og OWASP Top 10 til backend på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Design af sikre RESTful-API'er”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Sikker kodning og OWASP Top 10 til backend-lektion?
Ja. Alle Sikker kodning og OWASP Top 10 til backend-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Design af sikre RESTful-API'er
- GraphQL-API-sikkerhed
- Forebyggelse af SSRF-angreb
- Hastighedsbegrænsning og throttling af API'er