Μετάβαση στο περιεχόμενο
leeveel
← Όλα τα εργαλεία

§Δωρεάν έλεγχος scripts σελίδας πληρωμής

Ποιος τρέχει στο checkout σου;

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

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

01Scripts σελίδας πληρωμής

Κάθε script διαβάζει την κάρτα.

Ένα script σε μια σελίδα μπορεί να διαβάσει τα πάντα σε αυτήν, μαζί με ό,τι πληκτρολογεί ένας πελάτης σε μια φόρμα πληρωμής. Έτσι δουλεύει το e-skimming: οι επιτιθέμενοι παραβιάζουν ένα script, συχνά ενός τρίτου που κανείς στην ομάδα δεν σκέφτεται, και αντιγράφουν τα στοιχεία της κάρτας καθώς πληκτρολογούνται.

Το PCI DSS v4.0.1 απαντά με δύο απαιτήσεις που έγιναν υποχρεωτικές στις 31 Μαρτίου 2025. Η απαίτηση 6.4.3 ζητά απογραφή κάθε script σε σελίδα πληρωμής, με γραπτή αιτιολόγηση για το καθένα και τρόπο να επιβεβαιώνεται ότι το καθένα είναι εξουσιοδοτημένο και ανέπαφο. Η απαίτηση 11.6.1 ζητά μηχανισμό που εντοπίζει μη εξουσιοδοτημένες αλλαγές σε αυτά τα scripts και στα headers της σελίδας που επηρεάζουν την ασφάλεια, τουλάχιστον μία φορά την εβδομάδα.

Αν το checkout σου ενσωματώνει τη φόρμα ενός παρόχου πληρωμών σε iframe, τα scripts μέσα σε αυτό είναι ευθύνη του παρόχου, αλλά τα scripts της σελίδας σου γύρω από αυτό είναι δικά σου. Οι merchants που επικυρώνουν με SAQ A επιβεβαιώνουν πλέον ότι το site τους δεν είναι ευάλωτο σε επιθέσεις από scripts, και το FAQ 1588 του PCI αναφέρει τις τεχνικές των 6.4.3 και 11.6.1 ως έναν τρόπο να γίνει αυτό. Σε κάθε περίπτωση, το πρώτο βήμα είναι να ξέρεις τι τρέχει στη σελίδα.

02Πώς δουλεύει

Τέσσερα βήματα, καμία εικασία.

  1. 01

    Σελίδα

    Φέρνουμε τη σελίδα όπως την παίρνει ένας browser πριν τρέξει οτιδήποτε: μόνο δημόσιες διευθύνσεις, έως δέκα δευτερόλεπτα και πέντε megabytes.

  2. 02

    Scripts

    Απαριθμούμε κάθε script tag, εξωτερικό και inline, και φέρνουμε έως 40 αρχεία script για να τα κάνουμε hash.

  3. 03

    Ακεραιότητα

    Όπου ένα script έχει integrity attribute, το ελέγχουμε με το αρχείο. Όπου δεν έχει, δείχνουμε την τιμή που θα μπορούσες να προσθέσεις.

  4. 04

    Πολιτική

    Διαβάζουμε το Content Security Policy και ελέγχουμε ποια scripts επιτρέπει, και μετά HTTPS, HSTS, frames και cookies, και ψάχνουμε τον κώδικα για εκτεθειμένα κλειδιά.

03Τι ελέγχει

Scripts, πολιτική, μεταφορά.

  • ✓Κάθε script tag της σελίδας, εξωτερικό και inline, με το από πού έρχεται και αν είναι δικό σου ή τρίτου.
  • ✓Hash SHA-384 και SHA-256 κάθε αρχείου script όπως το φέραμε, και αν ταιριάζει με το integrity attribute του.
  • ✓Tag managers που φορτώνουν κι άλλα scripts αφού φτάσει η σελίδα.
  • ✓Το Content Security Policy: αν εφαρμόζεται, αν είναι report-only ή λείπει, 'unsafe-inline', 'unsafe-eval', wildcards, και ποια scripts θα μπλόκαρε.
  • ✓Iframes, και πεδία κάρτας στο HTML της ίδιας της σελίδας.
  • ✓HTTPS, scripts που φορτώνουν με HTTP, HSTS, X-Content-Type-Options και προστασία από frames.
  • ✓Τα flags Secure, HttpOnly και SameSite στα cookies που ορίζει ο server.
  • ✓Μυστικά κλειδιά ξεχασμένα στη σελίδα ή στα scripts της, όπως μυστικά API keys, ιδιωτικά κλειδιά και κωδικοί βάσεων δεδομένων, με απόκρυψη. Τα publishable keys δεν επισημαίνονται.
  • ✓Απογραφή σε CSV με στήλες για αιτιολόγηση και έγκριση, και σύγκριση με CSV παλιότερου ελέγχου.

04Τι δεν βλέπει

Εκεί που σταματά ο κώδικας.

  • —Αν είσαι συμμορφωμένος με το PCI DSS. Είναι απογραφή, όχι αξιολόγηση ούτε ASV scan. Η συμμόρφωση επικυρώνεται με τις επίσημες φόρμες του PCI SSC, μέσω του acquirer ή του assessor σου.
  • —Scripts που προστίθενται αφού φτάσει η σελίδα, από tag managers ή από άλλα scripts. Διαβάζουμε το HTML πριν τρέξει οτιδήποτε, οπότε δεν θα εμφανιστούν.
  • —Σελίδες πίσω από login ή καλάθι. Βλέπουμε ό,τι παίρνει ένας ανώνυμος επισκέπτης από αυτό το URL, οπότε δοκίμασε ένα URL checkout που φορτώνει χωρίς session, ή ένα αντίγραφο staging.
  • —Scripts μέσα στο iframe του παρόχου πληρωμών σου. Αυτά είναι ευθύνη του παρόχου, και δεν τα ανοίγουμε.
  • —Cookies που ορίζουν scripts, και μυστικά που εμφανίζονται μόνο όταν τρέξει η σελίδα ή μετά τη σύνδεση. Αυτά έλεγξέ τα στα developer tools του browser σου (καρτέλα Application).
  • —Αλλαγές στον χρόνο. Η σύγκριση δύο exports βοηθά, αλλά δεν είναι ο αυτόματος εντοπισμός, τουλάχιστον εβδομαδιαίος, που ζητά η απαίτηση 11.6.1.

05Ερωτήσεις

Για το Roll Call

Είναι δωρεάν;
Ναι. Χωρίς λογαριασμό και χωρίς email για να δεις τα αποτελέσματα. Ένα captcha κρατά έξω την αυτοματοποιημένη κίνηση, και κάθε επισκέπτης μπορεί να τρέξει έως δέκα ελέγχους κάθε δέκα λεπτά.
Ένα καθαρό αποτέλεσμα σημαίνει ότι είμαστε συμμορφωμένοι με το PCI DSS;
Όχι. Το Roll Call απαριθμεί τι υπάρχει στη σελίδα και ελέγχει μερικά μέτρα που βοηθούν στις απαιτήσεις 6.4.3 και 11.6.1. Η συμμόρφωση επικυρώνεται με τις επίσημες φόρμες του PCI SSC, μέσω του acquirer σου ή ενός Qualified Security Assessor, και κανένα εργαλείο δεν το αντικαθιστά αυτό.
Είναι αυτό ASV scan;
Όχι. Το ASV scan είναι ο τριμηνιαίος εξωτερικός έλεγχος ευπαθειών που ζητά η απαίτηση 11.3.2 του PCI DSS, από εταιρεία εγκεκριμένη από το PCI SSC. Το Roll Call διαβάζει μία σελίδα και τα scripts που φορτώνει.
Η φόρμα κάρτας μας είναι στο iframe του παρόχου μας. Μας αφορά ακόμη;
Ναι, για τη σελίδα γύρω από αυτό. Το PCI DSS κάνει τον πάροχο υπεύθυνο για τα scripts μέσα στο iframe του, αλλά τα scripts της σελίδας που το ενσωματώνει παραμένουν in scope για τις 6.4.3 και 11.6.1. Οι merchants με SAQ A επιβεβαιώνουν αντί γι' αυτό ότι το site τους δεν είναι ευάλωτο σε επιθέσεις από scripts, και αυτές οι τεχνικές είναι ένας τρόπος να το δείξουν.
Χρειαζόμαστε Subresource Integrity σε κάθε script;
Όχι. Το PCI DSS δεν επιβάλλει συγκεκριμένο μηχανισμό ακεραιότητας· ο οδηγός του PCI δίνει το CSP και το SRI ως παραδείγματα. Το SRI ταιριάζει σε αρχεία που δεν αλλάζουν ποτέ. Για scripts που ο πάροχος ενημερώνει στο ίδιο URL, όπως πολλά payment SDKs, ένα αυστηρό CSP και ο εντοπισμός αλλαγών δουλεύουν καλύτερα.
Μπορεί να παρακολουθεί τη σελίδα για αλλαγές;
Όχι μόνο του. Κατέβασε το CSV μετά από κάθε έλεγχο και φόρτωσε το προηγούμενο την επόμενη φορά: το Roll Call δείχνει τι εμφανίστηκε, χάθηκε ή άλλαξε. Η απαίτηση 11.6.1 ζητά αυτόματο εντοπισμό τουλάχιστον εβδομαδιαία· αν θέλεις να το στήσουμε, μίλα μαζί μας.
Αποθηκεύετε ό,τι ελέγχω;
Όχι. Φέρνουμε τη σελίδα και τα scripts της, τα ελέγχουμε και τα πετάμε. Τα αποτελέσματα μένουν στη μνήμη για δέκα λεπτά, ώστε ο επανέλεγχος να είναι άμεσος. Τα analytics μας καταγράφουν ότι έγινε ένας έλεγχος, ποτέ ποιο URL. Ένα CSV που φορτώνεις για σύγκριση διαβάζεται στον browser σου και δεν μας στέλνεται ποτέ.

Πέρα από την απογραφή

Η λίστα με τα scripts είναι το πρώτο βήμα. Το να μένουν τίμια είναι η δουλειά.

Η απογραφή θέλει ένα απόγευμα. Η αιτιολόγηση κάθε script, μια αυστηρότερη πολιτική και το να πιάνεις μια αλλαγή πριν από τον πελάτη θέλουν διαδικασία. Γράψαμε για το πώς ξεχωρίζεις το σήμα από τον θόρυβο των scanners στο Τα περισσότερα scan findings σου είναι θόρυβος.