Αυτό είναι ένα σύστημα σχεδιασμού ερώτημα / πρόκληση, από μια κωδικοποίηση ερώτηση.
Βασικά, σκέφτομαι να ρίχνουν μαζί ένα Bejeweled -esque παιχνίδι στο Facebook, χρησιμοποιώντας μόνο HTML, CSS και javascript. Αυτό είναι ως επί το πλείστον από την επιθυμία να μάθουν όλα τα μικρά επιφυλάξεις της Fbjs μέσω ενός μη-τετριμμένη έργου.
Έτσι, εδώ είναι η διαπραγμάτευση. Κατά την ανάπτυξη για το Facebook, πραγματικές κλήσεις API είναι πολύ ακριβά? όχι μόνο υπάρχει μια πρόσθετη θέση στους servers του Facebook, υπάρχει επίσης το όριο κλήσεων API και επιτάχυνσης να ανησυχούν. Με λίγα λόγια, οι λιγότερες κλήσεις στο Facebook τόσο το καλύτερο. Συνδυάστε αυτό με το χρονοδιάγραμμα ανησυχίες, ακόμη και αυτό το απλό παιχνίδι παζλ, και υπάρχει καλός λόγος για να ελαχιστοποιηθεί επιθετικά τον αριθμό των επιστροφές κλήσεων σε γενικές γραμμές.
Δεν είναι ειδικός σε θέματα ασφάλειας, εδώ είναι το σχέδιο που έχω καταλήξει:
- Ενσωματώστε ένα τυχαίο σπόρο στην σελίδα του παιχνιδιού.
- Χρησιμοποιήστε ότι οι σπόροι για να δημιουργήσει το παιχνίδι του σκάφους (καθώς και επιπλέον κομμάτια, όπως απαιτείται).
- Tweak το σπόρο (xor, concatenate και κατακερματισμού, κάτι τέτοιο) μετά από κάθε κίνηση παίκτη, με βάση το χρόνο από την τελευταία κίνηση. Επεξεργασία: Θα πρέπει πιθανότατα να περιλαμβάνει, επίσης, την πραγματική κίνηση που λαμβάνονται σε μετάλλαξη του σπόρου.
- Μετά την ολοκλήρωση του παιχνιδιού μετά πίσω τα εξής: παιχνίδι ώρα έναρξης, κάθε κίνηση που και πότε, και τα πλευρά του client αποτελέσματα.
- Στο διακομιστή, εκτελέστε ξανά το παιχνίδι με τα δεδομένα στοιχεία, η λογική τον έλεγχο του χρόνου έναρξης και κινούνται φορές, και στη συνέχεια να επιβεβαιώσει ότι ο αγώνας αποτελέσματα.
- Για την άμβλυνση άρνηση υπηρεσίας, το ίδιο το παιχνίδι θα πρέπει να πειραγμένο να έχει μια νίκη με την κατάσταση σειρά του Χ.
- Για να αποθαρρύνουν ο διακομιστής που χρησιμοποιείται ως «χρησμό» του είδους, ο χρήστης σημειώνοντας πίσω ένα άκυρο το παιχνίδι θα πρέπει να απαγορευτεί για κάποια σταθερά χρόνου X (X είναι της τάξης των λεπτών).
Αυτό το σχέδιο απαιτεί τρία Facebook κλήσης ανά παιχνίδι παίζεται: μία για να αποθηκεύσετε το τυχαίο σπόρο πριν παίζεται το παιχνίδι, να τον φέρω μετά το παιχνίδι έχει τελειώσει, και μία για την ενημέρωση σκορ του παίκτη, αν το παιχνίδι είναι έγκυρη.
Αυτό που προσπαθώ να αποδείξεις το σύστημα κατά των είναι κατ 'ευθείαν επάνω βαθμολογία πλαστογράφηση ( http: // ... myscore = 999999999 , ή κάτι παρόμοιο). Θα ήθελα επίσης να μετριάσει «κοιτάξουμε μπροστά» επιθέσεις, όπου ο χρήστης μπορεί να πει ποια κομμάτια έρχονται στο διοικητικό συμβούλιο επόμενο. Θα πρέπει επίσης να προληφθούν επιθέσεις άρνησης υπηρεσίας στον εξυπηρετητή φιλοξενίας (σκόπιμη ή μη).
Το πραγματικό ερώτημα, μπορεί κανείς να δει ένα ελάττωμα σε αυτό το σχέδιο; Ισοδύναμα, είναι ένα απλούστερο σχέδιο που πληροί τα κριτήρια μου;
Σημείωση: Γνωρίζω πόσο περιττή αυτή η πιθανότητα δεν είναι, αλλά μια ενδιαφέρουσα ερώτηση, κανένα το λιγότερο.
Πάω να προσπαθήσουμε και να ρίξει κάποιους αριθμούς εδώ για να απεικονίζουν περαιτέρω συλλογισμό μου, αυτά είναι αρκετά σκληρό, αλλά ελπίζω χρήσιμη.
Υποθέτοντας έναν πίνακα 10x10 παιχνίδι, υπάρχουν ~ 200 πιθανές κινήσεις (εναλλαγή δύο γειτονικών τεμαχίων) τα περισσότερα από τα οποία είναι άκυρη. Ας πούμε ότι υπάρχουν κατά μέσο όρο 5 έγκυρη κινήσεις ανά «στροφή». Αν περιορίσουν τις ενέργειες των παικτών στο πλαίσιο των 50 έως 30.000 χιλιοστά του δευτερολέπτου, υπάρχουν 149.750 πιθανούς νέους hashes υπό την προϋπόθεση ότι «μικροαλλαγές» αλγόριθμο δεν απορρίπτει bits? Νιώθω αυτοπεποίθηση ας πούμε ότι υπάρχουν τουλάχιστον 10.000 πιθανούς νέους hashes που πρέπει να υπολογίζεται από έναν εισβολέα υποθέτοντας μια κρυπτογραφικά ασφαλών hash χρησιμοποιείται. Αν ρίξετε μια min-max αλγόριθμο σε αυτή, την απόφασή σας εκρήγνυται δέντρο πολύ γρήγορα. Ρίξτε μια λήξη της συνεδρίας του παιχνιδιού σε αυτό, δηλαδή 30 λεπτά, και πιστεύω ότι την επίθεση, διότι ισοδυναμεί με την πολυπλοκότητα να γράφει ένα μικρό πρόγραμμα bot για να παίξει για σας που δεν μπορούν εύλογα να υπερασπιστεί ενάντια.













