Standardvärden kan sänka dig
TL;DR: Behandla okända svar som obehöriga, inte som giltiga.
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.
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; }
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; }
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.
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-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-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.
Kom ihåg: AI-assistenter gör många misstag
Utan korrekta instruktioner | Med specifika instruktioner |
---|---|
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.
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
Code Smells är min åsikt .
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.