Standardvärden kan sänka dig
TL;DR: Behandla okända svar som obehöriga, inte som giltiga.
Problem
- Säkerhetsrisker
- Ignorera okända fall
- Fel Misstolkning
- Standardinställning till giltiga tillstånd
- Missmatcha auktoriseringar
- Det gick inte att logga händelser
- Exploateringspotential
Lösningar
- Validera alla svar mot en sluten uppsättning kända koder.
- Standard (och okänd) till obehöriga eller ta bort standardvärden .
- Logga alla felmatchade eller oväntade fall för analys.
- Testa med kantscenarier.
- Synkronisera svarspooler med processorer regelbundet för att undvika föråldrade koder.
- Fokusera på säkerhet och gör det till en vänsterväxlingsprocess.
- Designa system med förändringsförmåga för att hantera föränderliga scenarier.
Sammanhang
Idag är det datorsäkerhetsdag och varje programmerare måste erkänna sitt ansvar.
Föreställ dig en applikation som hanterar försäljning som är beroende av svarspooler från kreditkortsprocessorer för att hantera transaktioner.
Varje kreditkortsprocessor tillhandahåller fördefinierade svarskoder för olika situationer, såsom otillräckligt saldo eller utgångna kort.
Problemet börjar när en processor lägger till en ny svarskod för nekade transaktioner men inte meddelar plattformen.
Applikationen känner inte igen den nya koden, behandlar den som standard som "inte hittad" och godkänner köpet.
Användare märker detta fel och utnyttjar det för att göra obehöriga köp.
Plattformens intäkter sjunker, vilket leder till konkurs.
Provkod
Fel
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; default: // Authorize purchase break; }
Rätt
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "APPROVED": // Authorize purchase break; case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; case "DECLINED_NEW_REASON": // Handle new declined reason break; default: // Reject purchase (default case for unknown responses) break; }
Upptäckt
- [x] Manuell
Du kan upptäcka denna lukt genom att granska felhanteringslogiken.
Kontrollera om systemet loggar och nekar okända fall.
Automatiserade tester kan hjälpa till att identifiera om nya eller oväntade indata har giltiga åtgärder som standard.
Statiska analysverktyg kan hjälpa till genom att flagga potentiellt ofullständig felhantering.
Taggar
- Säkerhet
Nivå
- [x] Mellanliggande
Varför Bijection är viktigt
Det är viktigt att upprätthålla en en-till-en-överensstämmelse mellan din applikations interna representation av betalningsbehandlarens svar och de faktiska koder som returneras av processorn.
När du bryter Bijection skapar du en missmatchning.
Applikationen tolkar okända koder felaktigt, vilket leder till oväntat beteende, säkerhetshål och potentiellt katastrofala affärskonsekvenser.
AI-generation
AI-verktyg kan skapa denna lukt om du inte anger hur okända fall ska hanteras.
Till exempel kan generisk felhantering som standard till godartade resultat som "hittades inte" eller "framgång".
AI-detektion
AI-generatorer kan fixa denna lukt när du instruerar dem att behandla okända fall som obehöriga och betona loggning och testning av oväntade scenarier.
Prova dem!
Kom ihåg: AI-assistenter gör många misstag
Utan korrekta instruktioner | Med specifika instruktioner |
---|---|
Slutsats
Hantera alltid okända fall försiktigt.
Standardinställningar som "hittades inte" kan leda till allvarliga säkerhetsproblem och ekonomiska förluster.
Gör loggning och nekande av okända svar till en del av dina utvecklingsmetoder.
Ta växelvänsterbeslut relaterade till säkerhet under programmering.
Relationer
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352
Ansvarsfriskrivning
Code Smells är min åsikt .
Krediter
Foto av Nathana Rebouças på Unsplash
https://www.youtube.com/watch?v=J2QOejhA6ek
Antaganden är alla misslyckandens moder.
Sa Ouissal
Software Engineering Bra citat
Den här artikeln är en del av CodeSmell-serien.