DedSec Project

Καταγραφή χωρίς προσωπικά δεδομένα — DedSec Project

Συνταγή: καταγραφή συμβάντων JSON Lines με ελάχιστα δεδομένα Σενάριο και κριτήρια επιτυχίας Ένας τοπικός σαρωτής χρειάζεται γεγονότα επιτυχίας και αποτυχίας που μπορούν να αναλυθούν από…

Συνταγή: καταγραφή συμβάντων JSON Lines με ελάχιστα δεδομένα

Σενάριο και κριτήρια επιτυχίας

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

Πλήρες εκτελέσιμο παράδειγμα

Αποθήκευσε ως 04_Logging.py και εκτέλεσε με Python 3 και την ενσωματωμένη βιβλιοθήκη. Δεν απαιτείται διαδίκτυο ή πρόσβαση σε πραγματικά αρχεία σου.

import io, json
def record(sink, code, changed):
    if code not in {"SCAN_OK","SCAN_FAILED"} or type(changed) is not int or changed<0:
        raise ValueError("invalid event schema")
    event={"code":code,"changed_count":changed}
    sink.write(json.dumps(event,sort_keys=True,separators=(",",":"))+"\n")
log=io.StringIO()
record(log,"SCAN_OK",2)
record(log,"SCAN_FAILED",0)
rows=[json.loads(line) for line in log.getvalue().splitlines()]
assert rows==[{"changed_count":2,"code":"SCAN_OK"},
             {"changed_count":0,"code":"SCAN_FAILED"}]
assert "password" not in log.getvalue()
try: record(log,"[email protected]",1)
except ValueError: pass
else: raise AssertionError("unknown log code accepted")
assert len(log.getvalue().splitlines())==2
print("PASS minimal privacy-safe JSONL events")

Τεχνική εξήγηση

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

Περιορισμένες ασκήσεις

Πρόσθεσε θετικό elapsed_ms και απόρριψε αρνητικές τιμές. Γράψε γεγονότα σε προσωρινό αρχείο και προκάλεσε αποτυχία εγγραφής· δεν πρέπει να εμφανιστεί επιτυχία. Έλεγξε πώς το JSON κωδικοποιεί αλλαγές γραμμής αν επιτρέψεις μικρά καθαρισμένα μηνύματα. Όρισε πότε διαγράφονται τα παλιά αρχεία καταγραφής.

Διάγνωση και ασφάλεια

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