Predvolené nastavenia vás môžu potopiť
TL;DR: Neznáme odpovede považovať za neoprávnené, nie za platné.
Problémy
- Bezpečnostné riziká
- Ignorovanie neznámych prípadov
- Chyba Nesprávna interpretácia
- Predvolené na platné stavy
- Nesúlad oprávnení
- Udalosti sa nedajú protokolovať
- Využitie potenciálu
Riešenia
- Overte všetky odpovede na základe uzavretého súboru známych kódov.
- Predvolené (a neznáme) na neautorizované alebo Odstrániť predvolené .
- Zaznamenajte každý nezhodný alebo neočakávaný prípad na analýzu.
- Testujte s okrajovými scenármi.
- Pravidelne synchronizujte oblasti odpovedí s procesormi, aby ste sa vyhli zastaraným kódom.
- Zamerajte sa na bezpečnosť a urobte z neho proces posunu doľava.
- Navrhujte systémy s odolnosťou voči zmenám, aby ste zvládli vyvíjajúce sa scenáre.
Kontext
Dnes je deň počítačovej bezpečnosti a každý programátor musí uznať svoju zodpovednosť.
Predstavte si aplikáciu riadiacu predaj, ktorá sa pri spracovávaní transakcií spolieha na skupiny odpovedí od spracovateľov kreditných kariet.
Každý procesor kreditných kariet poskytuje preddefinované kódy odozvy pre rôzne situácie, ako je napríklad nedostatočný zostatok alebo expirovaná karta.
Problém začína, keď procesor pridá nový kód odpovede pre odmietnuté transakcie, ale neinformuje platformu.
Aplikácia nerozpozná nový kód, predvolene ho považuje za „nenájdený“ a autorizuje nákup.
Používatelia si všimnú túto chybu a využívajú ju na neoprávnené nákupy.
Príjmy platformy klesajú, čo vedie k bankrotu.
Vzorový kód
Nesprávne
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; }
Správne
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; }
Detekcia
- [x] Manuál
Tento zápach môžete zistiť kontrolou logiky spracovania chýb.
Skontrolujte, či systém nezaznamenáva a nepopiera nerozpoznané prípady.
Automatizované testy môžu pomôcť identifikovať, či nové alebo neočakávané vstupy predvolia platné akcie.
Nástroje statickej analýzy môžu pomôcť tým, že označia potenciálne neúplné spracovanie chýb.
Tagy
- Bezpečnosť
úroveň
- [x] Stredne pokročilý
Prečo je bijekcia dôležitá
Je dôležité udržiavať individuálnu zhodu medzi internou reprezentáciou odpovedí platobného procesora vašej aplikácie a skutočnými kódmi vrátenými procesorom.
Keď porušíte Bijection , vytvoríte nesúlad.
Aplikácia nesprávne interpretuje neznáme kódy, čo vedie k neočakávanému správaniu, bezpečnostným dieram a potenciálne katastrofálnym obchodným dôsledkom.
Generácia AI
Nástroje AI môžu vytvoriť tento zápach, ak nešpecifikujete, ako zaobchádzať s neznámymi prípadmi.
Napríklad všeobecné spracovanie chýb môže predvolene dosiahnuť neškodné výsledky ako „nenájdené“ alebo „úspech“.
Detekcia AI
Generátory AI dokážu tento zápach napraviť, keď im dáte pokyn, aby s neznámymi prípadmi zaobchádzali ako s neautorizovanými, a zdôraznite protokolovanie a testovanie neočakávaných scenárov.
Vyskúšajte ich!
Pamätajte: Asistenti AI robia veľa chýb
Bez riadneho návodu | S konkrétnymi pokynmi |
---|---|
Záver
Neznáme prípady riešte vždy opatrne.
Predvolené nastavenia ako „nenájdené“ môžu viesť k vážnym bezpečnostným problémom a finančným stratám.
Urobte protokolovanie a odmietnutie neznámych odpovedí súčasťou vašich postupov vývoja.
Pri programovaní robte rozhodnutia týkajúce sa bezpečnosti pri radení doľava.
Vzťahy
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
Vylúčenie zodpovednosti
Code Pachy sú môj názor .
Kredity
Foto: Nathana Rebouças na Unsplash
https://www.youtube.com/watch?v=J2QOejhA6ek
Domnienky sú matkou všetkých neúspechov.
Povedal Ouissal
Skvelé ponuky softvérového inžinierstva
Tento článok je súčasťou série CodeSmell.