paint-brush
Code Smell 282 - Dåliga standardvärden och hur man åtgärdar demförbi@mcsee
679 avläsningar
679 avläsningar

Code Smell 282 - Dåliga standardvärden och hur man åtgärdar dem

förbi Maximiliano Contieri4m2024/12/02
Read on Terminal Reader

För länge; Att läsa

Behandla okända svar som obehöriga, inte som giltiga.
featured image - Code Smell 282 - Dåliga standardvärden och hur man åtgärdar dem
Maximiliano Contieri HackerNoon profile picture

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

  1. Validera alla svar mot en sluten uppsättning kända koder.
  2. Standard (och okänd) till obehöriga eller ta bort standardvärden .
  3. Logga alla felmatchade eller oväntade fall för analys.
  4. Testa med kantscenarier.
  5. Synkronisera svarspooler med processorer regelbundet för att undvika föråldrade koder.
  6. Fokusera på säkerhet och gör det till en vänsterväxlingsprocess.
  7. 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

ChatGPT

ChatGPT

Claude

Claude

Bryderi

Bryderi

Copilot

Copilot

Tvillingarna

Tvillingarna

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çasUnsplash

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.

Hur du hittar de illaluktande delarna av din kod

L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

HÄNG TAGGAR

DENNA ARTIKEL PRESENTERAS I...