paint-brush
Code Smell 282 - Κακές προεπιλογές και πώς να τις διορθώσετεμε@mcsee
793 αναγνώσεις
793 αναγνώσεις

Code Smell 282 - Κακές προεπιλογές και πώς να τις διορθώσετε

με Maximiliano Contieri4m2024/12/02
Read on Terminal Reader

Πολύ μακρύ; Να διαβασω

Αντιμετωπίστε τις άγνωστες απαντήσεις ως μη εξουσιοδοτημένες, όχι ως έγκυρες.
featured image - Code Smell 282 - Κακές προεπιλογές και πώς να τις διορθώσετε
Maximiliano Contieri HackerNoon profile picture

Οι προεπιλογές μπορούν να σας βυθίσουν

TL;DR: Αντιμετωπίστε τις άγνωστες απαντήσεις ως μη εξουσιοδοτημένες, όχι ως έγκυρες.

Προβλήματα

  • Κίνδυνοι ασφάλειας
  • Αγνοώντας άγνωστες περιπτώσεις
  • Λάθος Παρερμηνεία
  • Προεπιλογή σε έγκυρες καταστάσεις
  • Αναντιστοιχίες εξουσιοδοτήσεων
  • Αποτυχία καταγραφής συμβάντων
  • Δυνατότητα εκμετάλλευσης

Λύσεις

  1. Επικυρώστε όλες τις απαντήσεις σε σχέση με ένα κλειστό σύνολο γνωστών κωδικών.
  2. Προεπιλογή (και άγνωστη) έως μη εξουσιοδοτημένη ή Κατάργηση προεπιλογών .
  3. Καταγράψτε κάθε αναντιστοιχία ή απροσδόκητη περίπτωση για ανάλυση.
  4. Δοκιμή με σενάρια ακμών.
  5. Συγχρονίστε τακτικά τις ομάδες απόκρισης με επεξεργαστές για να αποφύγετε τους παλιούς κωδικούς.
  6. Επικεντρωθείτε στην ασφάλεια, καθιστώντας τη διαδικασία μετατόπισης προς τα αριστερά.
  7. Σχεδιάστε συστήματα με ανθεκτικότητα στην αλλαγή για να χειρίζονται εξελισσόμενα σενάρια.

Συμφραζόμενα

Σήμερα είναι ημέρα ασφάλειας υπολογιστών και κάθε προγραμματιστής πρέπει να αναγνωρίσει την ευθύνη του.


Φανταστείτε μια εφαρμογή που χειρίζεται πωλήσεις που βασίζεται σε ομάδες απόκρισης από επεξεργαστές πιστωτικών καρτών για τη διαχείριση των συναλλαγών.


Κάθε επεξεργαστής πιστωτικών καρτών παρέχει προκαθορισμένους κωδικούς απόκρισης για διάφορες καταστάσεις, όπως ανεπαρκές υπόλοιπο ή ληγμένες κάρτες.


Το ζήτημα ξεκινά όταν ένας επεξεργαστής προσθέτει έναν νέο κωδικό απόκρισης για συναλλαγές που έχουν απορριφθεί, αλλά δεν ειδοποιεί την πλατφόρμα.


Η εφαρμογή δεν αναγνωρίζει τον νέο κωδικό, τον αντιμετωπίζει από προεπιλογή ως "δεν βρέθηκε" και εξουσιοδοτεί την αγορά.


Οι χρήστες παρατηρούν αυτό το ελάττωμα και το εκμεταλλεύονται για να κάνουν μη εξουσιοδοτημένες αγορές.


Τα έσοδα της πλατφόρμας πέφτουν κατακόρυφα, οδηγώντας σε χρεοκοπία.

Δείγμα κώδικα

Λανθασμένος

 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; }

Ανίχνευση

  • [x] Εγχειρίδιο

Μπορείτε να εντοπίσετε αυτή τη μυρωδιά ελέγχοντας τη λογική διαχείρισης σφαλμάτων.


Ελέγξτε εάν το σύστημα καταγράφει και απορρίπτει μη αναγνωρισμένες περιπτώσεις.


Οι αυτοματοποιημένες δοκιμές μπορούν να σας βοηθήσουν να προσδιορίσετε εάν νέες ή μη αναμενόμενες εισροές προεπιλογή για έγκυρες ενέργειες.


Τα εργαλεία στατικής ανάλυσης μπορούν να βοηθήσουν επισημαίνοντας τον δυνητικά ατελή χειρισμό σφαλμάτων.

Ετικέτες

  • Ασφάλεια

Επίπεδο

  • [x] Ενδιάμεσο

Γιατί το Bijection είναι σημαντικό

Είναι σημαντικό να διατηρείτε μια αλληλογραφία ένας προς έναν μεταξύ της εσωτερικής αναπαράστασης των απαντήσεων του επεξεργαστή πληρωμών της εφαρμογής σας και των πραγματικών κωδικών που επιστρέφονται από τον επεξεργαστή.


Όταν σπάτε το Bijection , δημιουργείτε μια αναντιστοιχία.


Η εφαρμογή ερμηνεύει άγνωστους κωδικούς εσφαλμένα, οδηγώντας σε απροσδόκητη συμπεριφορά, κενά ασφαλείας και δυνητικά καταστροφικές επιχειρηματικές συνέπειες.

Γενιά AI

Τα εργαλεία τεχνητής νοημοσύνης μπορούν να δημιουργήσουν αυτήν τη μυρωδιά αν δεν προσδιορίσετε πώς να χειρίζεστε άγνωστες περιπτώσεις.


Για παράδειγμα, ο γενικός χειρισμός σφαλμάτων ενδέχεται να έχει ως προεπιλογή καλοήθη αποτελέσματα όπως "δεν βρέθηκε" ή "επιτυχία".

Ανίχνευση AI

Οι γεννήτριες τεχνητής νοημοσύνης μπορούν να διορθώσουν αυτή τη μυρωδιά όταν τους δίνετε εντολή να αντιμετωπίζουν άγνωστες περιπτώσεις ως μη εξουσιοδοτημένες και δίνουν έμφαση στην καταγραφή και τη δοκιμή απροσδόκητων σεναρίων.

Δοκιμάστε τα!

Θυμηθείτε: Οι Βοηθοί AI κάνουν πολλά λάθη

Χωρίς κατάλληλες οδηγίες

Με συγκεκριμένες οδηγίες

ChatGPT

ChatGPT

Ο Κλοντ

Ο Κλοντ

Αμηχανία

Αμηχανία

Δεύτερος πιλότος

Δεύτερος πιλότος

Δίδυμοι

Δίδυμοι

Σύναψη

Να χειρίζεστε πάντα άγνωστες περιπτώσεις με προσοχή.


Προεπιλογές όπως "δεν βρέθηκε" μπορεί να οδηγήσουν σε σοβαρά ζητήματα ασφάλειας και οικονομικές απώλειες.


Κάντε την καταγραφή και την άρνηση άγνωστων απαντήσεων μέρος των πρακτικών ανάπτυξής σας.


Λάβετε αποφάσεις μετατόπισης προς τα αριστερά που σχετίζονται με την ασφάλεια κατά τον προγραμματισμό.

Συγγένειες

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 είναι η γνώμη μου.

Πιστώσεις

Φωτογραφία της Nathana Rebouças στο Unsplash

https://www.youtube.com/watch?v=J2QOejhA6ek


Οι υποθέσεις είναι η μητέρα όλων των αποτυχιών.

είπε ο Ouissal

Τεχνολογία Λογισμικού Υπέροχες προσφορές


Αυτό το άρθρο είναι μέρος της σειράς CodeSmell.

Πώς να βρείτε τα βρωμερά μέρη του κώδικα σας