Frage

Ich verstehe das Mantra von „nicht rollen Sie Ihre eigenen“, wenn es um Sicherheit der Website-Frameworks.

In den meisten Fällen sowieso.

Ich werde auf einer Website zusammen zu arbeiten, das Text-Messaging in das System integriert.

Ich mag einen bestehenden, verwenden bewährten Sicherheitsrahmen die Benutzer Daten zu schützen, aber ich muß es auch als auch einen Benutzer Telefonnummer zu schützen.

Ich würde nicht der Verantwortliche für eine Liste der Benutzer Handy-Nummern sein will immer aufgebockt und spammed.

Welche Vorschläge kann die Gemeinschaft an?

War es hilfreich?

Lösung

Beachten Sie, dass Passwörter verwendeten Techniken sind hier nicht anwendbar. Sie können ein Passwort speichern gesalzen und gehasht (obwohl der Wert Dadurch kann bestritten werden), aber das funktioniert nicht für Telefonnummern.

Wenn jemand Ihren Server-Buchsen, können sie alles tun, kann der Server. Dies muss umfassen die Telefonnummer erholt, nicht jedoch das Passwort erholt, wenn es gut gehasht wird. So ist die Telefonnummer ist nur ein besonderer Fall von vertraulichen Daten zu schützen.

Wenn Sie die Telefonnummern wirklich die einzigen sensiblen Daten in der App sind, dann könnte man sich den Teil der App abzuschotten, die die Texte sendet, und asymmetrisch die Telefonnummern verschlüsseln. In einem anderen Verfahren (oder auf einer anderen Maschine) laufen eine Anwendung, die den Schlüssel zum Entschlüsseln Telefonnummern aufweist. Diese Schnittstelle App hätte vielleicht eine Funktion eine verschlüsselte nicht und die Nachricht nehmen zu senden. Halten Sie diese App einfach und Test und prüfen den Rotz aus ihm heraus. Entweder verstecken sie von der Außenwelt, oder Authentifizierung verwenden die Anfrage wirklich von Ihrem Haupt-App kam zu beweisen, oder beides.

Weder der db noch der Hauptteil der App ist in der Lage Telefon nos entschlüsseln (so zum Beispiel können Sie nicht auf sie suchen), aber sie können sie für die Zugabe zu dem db verschlüsseln.

Die allgemeine Technik wird als „Privilege Separation“ ist die oben nur ein Beispiel.

Beachten Sie, dass Telefonnummern müßten generell mit zufälligen Daten vor der Verschlüsselung aufgefüllt werden (wie ein Hash-Passwort Salze). Sonst ist es möglich, die Frage zu beantworten „ist die verschlüsselte Telefonnummer X?“, Ohne den privaten Schlüssel zu kennen. Das ist nicht ein Problem aus der POV des Spammer sein kann Verteilerliste zu stehlen, aber es ist ein Problem aus der POV behauptet, dass Ihre Telefonnummern sicher gespeichert werden, da es bedeutet, ein Brute-Force-Angriff möglich wird: Es gibt nur ein paar Milliarden Telefonnummern, und es kann möglich sein, dass für einen bestimmten Benutzer massiv zu verengen.

Leider diese nicht direkt Ihre Frage beantworten:. Ich weiß nicht, ob es ein PHP-Framework, das Privileg Trennung implementieren helfen

[Bearbeiten hinzuzufügen: In der Tat, es fällt mir ein, dass unter der Überschrift ‚die privilegierte App einfach halten‘, könnte man durchaus nicht einen Rahmen verwenden möchten. Es hängt davon ab Art, ob Sie denken, dass Sie mehr oder weniger wahrscheinlich lassen Fehler in der geringen Menge an Code, den Sie wirklich brauchen, als die Rahmen Autoren Bugs verlassen haben sind in der viel größeren (aber häufiger verwendet) Menge an Code, den sie‘ ve geschrieben. Aber das ist eine große Übervereinfachung.]

Andere Tipps

Da Sie in der Lage sein müssen, um die Telefonnummern abzurufen, das einzige, was Sie wirklich tun können, um sie zu schützen (die über die normalen Dinge, die Sie zum Schutz Ihrer db tun würde) ist sie verschlüsseln. Dies bedeutet, dass Sie benötigen, um:

  • Stellen Sie sicher, dass der Schlüssel nicht undicht werden, wenn Sie versehentlich eine Datenbank-Dump undicht werden.
  • Stellen Sie sicher, dass Ihr System nicht helfend die Telefonnummern entschlüsseln, wenn jemand zu SQL injiziert Ihr System verwaltet.

Natürlich ist die Empfehlung nicht Ihre eigenen noch rollen gilt, verwenden Sie AES oder eine andere angesehene Chiffre mit einem vernünftigen Schlüssellänge.

Ich bin erfreut, die Veröffentlichung von Loch-Sicherheitssystem für PHP

ankündigen

Dieses Projekt steht für bringen zu PHP, um die Art von Sicherheit, die in Java von Spring Security das früher Acegi Sicherheitssystem für das Frühjahr vorgesehen. Es wurde entwickelt, um Spring Security Benutzer attraktiv zu sein, weil die Philosophie ist die gleiche. Es ist eine unaufdringliche Art und Weise der Sicherheit zu einer PHP-Website hinzuzufügen. Die Konfiguration wird mit Substrat IoC / DI hergestellt wie Spring Security verwenden Frühling IoC / DI.

Eine Beispielkonfiguration Schiff mit dem Rahmen und kann wie folgt verwendet werden:

$context = new substrate_Context(
    './path/to/hole-security/hole-security-config.php'
);

$context->execute();

$hole_Security = $context->get('hole_FilterChainProxy' );
$hole_Security->doFilter();

Nur sicher sein, dass der Bootstrap-Code des Rahmens vor dem Bootstrap der MVC Ihrer Wahl ausgeführt wird.

Website: http://code.google.com/p/hole-security/

Dokumentation: Im Moment können Sie Referenzdokumentation von Spring Security verwenden, wo es gilt. Sie können eine allgemeine Vorstellung erhalten die Acegi Sicherheitsreferenzdokumentation verwenden, da Loch-Sicherheit die gleiche Art und Weise der Konfiguration verwenden, aber denken Sie daran, dass es auf Spring Security basiert.

Lizenz: Es ist unter der Apache License Version veröffentlicht 2.0.

Features: Loch-Sicherheit bringt ein steckbares Sicherheitssystem, in dem Sie die Sicherheitsanforderungen Ihrer Umgebung übernehmen können. Derzeit gibt es ein sehr einfaches Sicherheitssystem, weil es auf der ersten Veröffentlichung ist aber mit der Basis Fundament, das es Sie könnten bringt für neue Funktionen vorschlagen oder Anfrage zu dem Projekt hinzugefügt werden.

Derzeit Eigenschaften:

  1. Im Speicher dao Authentifizierung als Proof of Concept, können Sie Ihre bevorzugte dao oder Implementierung wechseln, die Benutzerdaten aus der Datenbank der bekommen oder wo auch immer Sie es speichern. In Futures löst eine PDO-basierte Implementierung erstellt wird.

  2. projektierte Filter für zu URL-Mustern angewandt werden. URL-Pfad Matcher kann angeschlossen werden, ist es derzeit mit einer Ameise Arten Pfad Matcher versenden.

  3. Autorisierungs-Manager kann in der Anwendung verwendet werden, um etwas zu entscheiden, wann und wo dies nicht tun, immer die Referenz aus dem Substrat Kontext zu erhalten.

  4. Shared Sicherheitskontext von jedem Code Ihrer Anwendung, wenn hole_HttpSessionContextIntegrationFilter angewendet wird. Sie können diesen Kontext verwenden, um Informationen zu der Sitzung im Zusammenhang zu speichern, ohne direkt das Session-Objekt verwenden.

  5. Sie können eine benutzerdefinierte Login-Seite verwenden und passen Sie es entsprechend der hole_AuthenticationProcessingFilter Konfiguration oder anpassen hole_AuthenticationProcessingFilter nach Ihrer benutzerdefinierten Login-Seite.

  6. Der Standard-Passwort-Encoder ist Klartext, ohne Codierung. Futures Releases müssen Implementierungen für MD5, Sha basiert, Base64 und andere verwandte Codierung. Sie können Ihr eigenes Passwort Encoder erstellen und konfiguriert erhalten.

  7. Alle werden die Objekte je nach Bedarf geladen werden, wenn so etwas wie ein Filter nicht für eine Anforderung verwendet wird nicht geladen werden. Dies erhöht die Leistung der Anwendung Es gibt andere Funktionen, die Loch-Sicherheit im Zusammenhang hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top