Verstehen Sie die PCI -Einhaltung und ihre Auswirkungen auf die PHP -Entwicklung
PCI steht für die „Zahlungskartenindustrie“, aber für viele handelt es sich um eine Reihe von vagen Standards, die von geheimen internationalen Kartellen auferlegt werden, die darauf abzielen, ahnungslose Seelen mit schweren Statuten und rechtlichen Streitigkeiten zu begraben. Die Wahrheit ist viel langweiliger. Tatsächlich ist PCI eine Reihe von Sicherheitsrichtlinien, die von einer Koalition von Kreditkartenunternehmen und Branchensicherheitsexperten entwickelt wurden, um zu regulieren, wie sich Anwendungen bei der Bearbeitung von Kredit- oder Debitkarteninformationen verhalten. Kreditkartenunternehmen stellen Banken diese Standards auf, die Banken dann denjenigen von uns auferlegen, die E-Commerce-Websites betreiben. In diesem Artikel werden wir einige anhaltende Missverständnisse über PCI entfernen, über PCI aus einer Höhe von 20.000 Fuß erfahren und sich dann auf die Anforderungen im Zusammenhang mit allgemeiner Codierung und PHP konzentrieren.
Schlüsselpunkte
PCI Missverständnis
Kein Wunder, es gibt viele Missverständnisse rund um den PCI -Standard. Eines der Missverständnisse ist, dass sie wie der Mafia -Verhaltenskodex sind und nirgendwo geschrieben sind, sodass sie so interpretiert werden können, wie Sie es wollen. Das ist natürlich falsch. Um die vollständige Beschreibung der PCI -Standards zu erfahren, besuchen Sie einfach pcisecurityStandards.org. Ein weiteres Missverständnis ist, dass PCI -Sicherheitsstandards nur für "große Unternehmen" wie Banken und große Einzelhändler gelten. Sie eignen sich für alle, die Kreditkarteninformationen akzeptieren, um die Waren zu bezahlen. Wenn Sie eine PHP -Website für Ihre Mutter geschrieben haben, um ihren berühmten Zitronenkuchen zu verkaufen, haben Sie ein System, das den PCI -Richtlinien entspricht. Das dritte Missverständnis ist, dass Sie, wenn Sie PCI -Standards folgen, vor böswilligem Hacking geschützt werden und Ihre Daten sicher bleiben. Das ist natürlich gut, aber die Wahrheit ist, dass PCI -Standards Anleitungen und Ideen sind, nicht spezifische Techniken (sie müssen vage sein, um alle Architekturen und Plattformen anzupassen). Je mehr Sie sich auf die Sicherheit konzentrieren, desto weniger Chance werden Sie angegriffen, aber jeder kann angegriffen werden. Wenn Sie zumindest versucht haben, die PCI -Erwartungen zu erfüllen, ist Ihre Überprüfung sowohl in Bezug auf Recht als auch Verbraucher besser. Schließlich ist PCI nicht etwas, das Sie mit nur einem erreichen und dann tief einatmen können. Dieser Standard erfordert, dass Sie einmal im Jahr eine PCI -Überprüfung durchführen. Daher ist es wie Qualitätssicherungsarbeiten oder Hören Ihres Ehepartners, eine laufende Arbeit. Die einfache Tatsache ist, dass PCI etwas ist, das jeder Programmierer, der an einer Anwendung arbeitet, die Kreditkartendaten verarbeitet, unabhängig von der Größe wissen muss. Ja, deshalb sammeln Händler nur Bargeld.
Grundlagen von PCI
PCI -Standard besteht aus 12 grundlegenden Anforderungen. Der Standard wird ungefähr alle zwei Jahre aktualisiert, in denen eine Vielzahl spezifischeren Leitfaden veröffentlicht wird, die sich mit einer Teilmenge der PCI -Welt befassen. Im Februar 2013 veröffentlichte PCI -Mitarbeiter beispielsweise ein Weißbuch über PCI und Cloud Computing. Diese Sonderberichte sind auch auf der PCI -Website verfügbar. Wie wir sehen werden, sind viele PCI-Anforderungen mehr netzwerkbezogen, aber wenn Sie kein grundlegendes Verständnis für die volle PCI haben, was ist der Sinn, über diese Dinge zu sprechen? Diese Anforderungen sind:
Einige dieser Projekte beziehen sich auf politische Entscheidungen, d. H. Entscheidungen, die eindeutig angeben, wie Sie zum Schutz der Karteninformationen arbeiten und die allgemeine Sicherheit des Netzwerks und der Anwendungen sicherstellen. Andere Anforderungen haben mit dem Netzwerk selbst und der Software zu tun, mit der Sie es schützen können. Einige von ihnen beinhalten die Designphase des Prozesses, wie Sie Ihre Anwendung erstellen und einrichten. Es gibt nur wenige Anforderungen im Zusammenhang mit dem Code, und es gibt keine Anforderungen an die Beschreibung bestimmter Programmierungstechniken, die empfehlen, sicher zu bleiben. Um die Länge relativ kurz zu halten, werde ich meine Ironie und Weisheit (70:30 Verhältnis) einschränken und mich auf die letzten beiden Gruppen konzentrieren.
Anforderung 2 - Verwenden Sie nicht die Standardkonfigurationsdatei des Anbieters/Passwort
In vielerlei Hinsicht ist dies fast selbstverständlich. Sicherheitspersonal haben uns dies erzählt, seit wir uns über diese Dinge Sorgen gemacht haben. Es ist jedoch überraschend, wie einfach es ist, in vielen von uns verwendeten Software (wie MySQL) ein Standardkonto und Kennwort zu verwenden (insbesondere wenn Sie zum ersten Mal etwas installieren und alles im Status "Test" ist). Die Gefahr hier steigt, da die meisten von uns unsere Anwendungen um eine grundlegende Software aufbauen, anstatt das Ganze von Grund auf neu zu machen. Es kann sich nur um ein Paket handeln, mit dem Sie Verschlüsselung und Schlüsselspeicher verarbeiten (siehe unten), oder das Rahmen für die gesamte Anwendung. In jedem Fall leicht zu merken, einfach zu implementieren: Verwenden Sie das Standardkonto nicht.
Anforderung 3 - Schützen Sie gespeicherte Karteninhaberdaten
In den meisten hochkarätigen Einzelhandels-Website-Hacks, an die ich mich erinnere, gab es Diebstahl von Karten oder anderen Daten, die von der Website gespeichert wurden. Daher habe ich dies als den wichtigsten Teil des PCI-Standards aufgelistet. Offensichtlich sollten alle Kartendaten, die Sie speichern, verschlüsselt werden. Und Sie müssen eine gute Verschlüsselung leisten. Für diejenigen, die die Verschlüsselung sehr gut kennen, wissen Sie, dass Sie die Verschlüsselungsverschlüsselung gut leisten können. Das Schlüsselmanagement dreht sich um das Problem der Generierung, Speicherung und Aktualisierung von Schlüsseln, die in Verschlüsselungsprozessen verwendet werden. Das Speichern kann ein großes Problem sein, da Sie sicherstellen möchten, dass niemand in das System gelangen und die Schlüssel stehlen kann. Die Managementstrategien unterscheiden sich, wie Sie einen Schlüssel in mehrere Teile teilen können. tief. Wenn Sie kommerzielle Produkte verwenden, um die Verschlüsselung zu bewältigen, können Sie ihnen das Schlüsselmanagement überlassen, obwohl Sie sicherstellen möchten, dass der Prozess zuverlässig ist und dass es zu Ihrem Ansatz passt. Die meisten kommerziellen Produkte werden unter Berücksichtigung von PCI entwickelt und werden daher nach PCI -Standards gebaut, aber dies wird Sie immer noch nicht daran hindern, eine sekundäre Inspektion durchzuführen. Wenn Sie die Datenmenge, die Sie speichern, minimieren oder sogar beseitigen, wird die Aufgabe, Daten zu schützen, viel einfacher. Das heißt, die Karteninhaberdaten können ihr Name, Geburtstag, Kartennummer, Gültigkeitsdauer, CV -Code (Card Converification) (drei oder vier Ziffern auf der Rückseite oder vor der Karte) usw. sein. Je weniger Elemente Sie sparen, desto weniger benötigen Sie verschlüsselt und die weniger Verantwortung, die Sie haben. Glücklicherweise ist dies ein ziemlich spezifischer Bereich von PCI -Standards, die klar definieren, welche Daten Sie speichern können und was nicht. Sie können die Kartennummer (PAN - Hauptkontonummer), Karteninhabername, Ablaufdatum und Servicecode speichern. Wenn Sie eine Pfanne speichern, müssen Sie sie blockieren, und nur die ersten sechs und die letzten vier Ziffern können höchstens angezeigt werden. Sie können den gesamten Inhalt eines Stifts, eines Lebenslaufcode oder eines Magnetstreifens nicht speichern. Die Frage, die Sie sich während der Designphase stellen müssen, ist, wie viel dieser nervigen Daten Sie wirklich behalten möchten. Der einzige wirkliche Grund, um es zu behalten, ist, dass Sie Ihren Kunden das nächste Mal einfach eine einfache Erfahrung bieten möchten. Sie können Ihren Geburtstag behalten, damit Sie ihnen eine freundliche kleine Einladung an Ihrem Geburtstag schicken können. Alle diese Daten müssen verschlüsselt und geschützt werden. Stellen Sie daher sicher, dass Sie einen zuverlässigen kommerziellen Einsatz davon erhalten. Anforderung 4 (Verschlüsseln von Daten, die übertragen werden) gilt als Teil dieses Teils, aber ich werde sie als Teil der Infrastruktur betrachten und nicht in Details eingehen.
Anforderung 6 - Entwickeln und pflegen Sie sichere Systeme und Anwendungen
Dies ist eine codebedingte Anforderung. Nicht auf eine bestimmte Funktion oder Klasse abzielen, aber zumindest sicherstellen, dass Sie allgemeine Sicherheitsstandards befolgen und versuchen, Ihre Sachen so sicher wie möglich zu gestalten. Sie verwenden also nur Codierungstechniken (unabhängig von der Sprache), die Ihre Anwendung nicht für offensichtliche Angriffe anfällig machen. Beispielsweise versuchen Sie, die SQL -Injektion zu verhindern, indem Sie Vorsichtsmaßnahmen beim Akzeptieren von Formulardaten treffen. Sie versuchen, XSS usw. zu blockieren. Weitere Informationen zur Vermeidung einiger der häufigsten Sicherheitsprobleme finden Sie in einigen anderen Artikeln, die auf SitePoint veröffentlicht wurden (diesen Artikel und diesen Artikel sowie andere Artikel, die Sie finden, wenn Sie nach "Safe" suchen.
erfordert 7 und 8 - eingeschränkter Zugriff und eindeutige IDs
Beide Dinge beziehen sich auf die Art und Weise, wie Sie auf Ihre Anwendung zugreifen, und liegt daher irgendwo zwischen Codierung und Design. Es sollte kein Problem sein, dass jeder Besucher eine eindeutige ID hat, es sei denn, Sie erlauben den Personen, sich anzumelden und über das Gastprofil einzukaufen. Ich kann mir mehrere Websites vorstellen, auf denen Sie dies tun können, was an sich nicht böse ist, aber die Verwendung von Gruppenprofilen ist gefährlich und Sie müssen besonders vorsichtig sein, um sicherzustellen, dass sie nicht viel Erlaubnis haben. Im Allgemeinen sollten Sie versuchen, eine eindeutige ID festzulegen, auch wenn die ID nicht die ID ist, die Sie gespeichert haben. Sie können sich beispielsweise als Gast anmelden lassen, erstellen jedoch sofort eine eindeutige Konfigurationsdatei für das Ereignis im Hintergrund. Wir möchten auch den physischen Zugriff auf Karteninhaberdaten einschränken. Dies kann ein Hinweis auf die Zukunft sein, wenn wir die Menschen auf submikroskopische Größen wie Isaac Asimovs fantastischer Reise verkleinern und sie in das Speichergerät injizieren können, um die 1 und 1 der Kartendaten 0 zu erhalten… oder es kann auch verwandt sein Zu gesperrten Serverräumen, Abzeichen für alle Besucher, die niemanden ermöglichen, sich den Backup -Bändern zu nähern, usw.
Anforderungen 10 - Verfolgung und Aufzeichnung aller Zugriff auf Ressourcen/Daten
Schließlich unterschätzen Sie nicht, wie wichtig es ist, alles zu verfolgen und aufzunehmen, was auf Ressourcen oder Karteninhaberdaten zugreift ... Ich meine alles. Zu den Ereignissen, die aufgezeichnet werden sollten, gehören Anmelde, Anmeldung, Datenzugriff; Sie müssen ein sicheres Protokoll implementieren, das die Protokolle jeden Tag überprüft, um Probleme zu finden, und die Protokolle für ein Jahr sparen. Für PHP-Benutzer wäre es vorteilhaft, mit dem PSR-3-Protokollierungsstandard aus der PHP-Fig-Gruppe vertraut zu sein, die eine einheitliche und flexible Möglichkeit bietet, Ihre Protokollierung einzurichten. Anstatt hier ausführlich in die Tiefe einzutauchen, schlage ich vor, dass Sie Patrick Mulveys Einführungsartikel lesen.
Zusammenfassung
Eine Sache, die ich wirklich betonen möchte, ist, dass PCI nicht das i -Tüpfelchen ist. Es ist der grundlegende Teil des Erstellens einer Anwendung, die Kreditkartendaten verwendet. Wenn Sie eine Bewerbung schreiben, die diese Art von Daten erhält, funktioniert sie für Sie, unabhängig davon, ob Ihre Kunden sie wissen oder nicht. Der größte Teil des Inhalts liegt über der Codierungsstufe, aber es ist real und Sie müssen immer noch darauf achten. Bilder aus Fotolien
FAQs (FAQs) zur PCI -Konformität und der PHP -Entwicklung
PCI -Konformität bezieht sich auf die Einhaltung des PCI -DSS (Zahlungskartenbranche), eine Reihe von Sicherheitsstandards, die sicherstellen, dass alle Unternehmen, die Kreditkarteninformationen akzeptieren, verarbeiten, speichern oder übertragen, eine sichere Umgebung aufrechterhalten. Für PHP -Entwickler ist das Verständnis und die Implementierung der PCI -Einhaltung von entscheidender Bedeutung, da sie dazu beiträgt, die sensiblen Daten der Kunden zu schützen, das Risiko von Datenverletzungen zu verringern und Vertrauen bei den Benutzern aufzubauen. Die Nichteinhaltung der Vorschriften kann zu Strafen, Geldstrafen und sogar zum Verlust der Fähigkeit zur Verarbeitung von Zahlungen führen.
PHP -Entwickler können die PCI -Einhaltung in mehreren wichtigen Schritten sicherstellen. Diese Schritte umfassen die Verwendung sicherer Codierungspraktiken, um häufige Schwachstellen zu verhindern, sensible Daten zu verschlüsseln, leistungsstarke Zugriffskontrollen zu implementieren, Systeme und Anwendungen regelmäßig zu testen und zu aktualisieren und die Richtlinien zur Informationssicherheit zu verwalten.
Einige häufige Sicherheitslücken in PHP sind SQL-Injektion, Cross-Site-Skript (XSS) und CSRF (Cross-Site Request Forgery (CSRF). Diese Schwachstellen können durch Verwendung vorbereiteter Aussagen oder parametrisierter Abfragen verhindert werden, um die SQL-Injektion, die Validierung und den sauberen Benutzereingang sowie die Anti-CSRF-Token zu verhindern, um CSRF-Angriffe zu verhindern.
PHP -Entwickler können Kreditkartendaten sicher verarbeiten, indem sie die PCI -DSS -Anforderungen folgen. Dies beinhaltet das Verschlüsselung von Karteninhaberdaten, die in einem offenen öffentlichen Netzwerk übertragen werden, gespeicherte Karteninhaberdaten, implementieren leistungsstarke Zugriffskontrollen, regelmäßige Überwachung und Prüfung des Netzwerks sowie die Wartung von Informationssicherheitsrichtlinien.
Verschlüsselung spielt eine entscheidende Rolle bei der PCI -Konformität. Es schützt sensible Daten, indem sensible Daten wie Kreditkarteninformationen in ein Format konvertiert werden, das nicht gelesen werden kann, das nur mit einem Entschlüsselungsschlüssel entschlüsselt werden kann. Dies stellt sicher, dass nicht autorisierte Personen, selbst wenn die Daten während der Übertragung abgefangen werden, sie nicht lesen oder verwenden können.
PHP -Entwickler können den physischen Zugriff auf Karteninhaberdaten einschränken, indem sichergestellt wird, dass jeder Person mit Computerzugriff eine eindeutige ID zugewiesen wird, und den Zugriff auf Karteninhaberdaten auf der Grundlage von Prinzipien einschränken, dass das Unternehmen die Implementierung starker Zugangskontrollmaßnahmen implementieren muss. Darüber hinaus sollten sie die Zugriffskontrollen regelmäßig überprüfen und nach Bedarf aktualisieren.
Die Nichteinhaltung der PCI -DSS kann zu einer Reihe von Konsequenzen führen, einschließlich Bußgeldern, Strafen und sogar zum Verlust der Fähigkeit, Kreditkartenzahlungen zu verarbeiten. Darüber hinaus kann es den Ruf des Unternehmens beschädigen und zu einem Rückgang des Kundenvertrauens führen.
PHP -Entwickler sollten ihre Systeme und Anwendungen regelmäßig auf Sicherheitslücken testen. Die Häufigkeit des Tests hängt von den spezifischen Anforderungen von PCI -DSS ab, aber als Best Practice, Systeme und Anwendungen sollten mindestens einmal im Jahr sowie nach signifikanten Änderungen getestet werden.
Informationssicherheitsrichtlinie ist eine Reihe von Regeln und Verfahren, die von einem Unternehmen zum Schutz seiner Informationsvermögen gefolgt werden. Für die Einhaltung von PCI ist es wichtig, da alle Mitarbeiter ihre Rollen und Verantwortlichkeiten beim Schutz von Karteninhaberdaten verstehen und einen Rahmen für die Implementierung und Wartung von Sicherheitskontrollen bieten.
PHP -Entwickler können über die neuesten PCI -DSS -Anforderungen auf dem Laufenden bleiben und die Website des offiziellen PCI -Sicherheitsnormensausschusses regelmäßig überprüft, sich für relevante Sicherheits -Newsletter und -blogs, die Teilnahme an Sicherheitskonferenzen und Webinaren abonnieren und an Sicherheitstrainungs- und Zertifizierungsprogrammen teilnehmen Sicherheitsbesten. Best Practices.
Das obige ist der detaillierte Inhalt vonPHP Master | PCI -Konformität und was es für PHP bedeutet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!