Speichern wichtiger geheimer Schlüssel in PHP-Dateien

8

Wir machen eine App mit PHP und einigen Drittanbieterdiensten, die einen geheimen API-Schlüssel erfordern. Wir haben eine PHP-Datei, die alle Schlüsseldefinitionen enthält, die wir dann importieren (mit require_once), wenn sie benötigt werden.

Ist dieser Ansatz sicher? Sollten wir die Schlüssel an einem anderen Ort aufbewahren?

Danke.

    
DiogoNeves 22.02.2010, 14:34
quelle

4 Antworten

13

Ähnliches wurde heute nach einem Shell-Skript gefragt. Die Antwort gilt auch hier: Stellen Sie sicher, dass Sie die Datei außerhalb des Webstamms speichern oder (falls dies nicht möglich ist) schützen Sie sie mit einer .htaccess -Datei.

Ich mag auch unset () alle Variablen mit sensiblen Daten nach der Verwendung, also nicht einmal Ein vollständiger Variablen-Dump (z. B. in einer Debug-Nachricht) später in diesem Skript könnte es aufdecken.

    
Pekka 웃 22.02.2010, 14:37
quelle
3

Es sollte relativ sicher sein, solange die Datei nicht über das Internet zugänglich ist. Viele Websites platzieren vertrauliche Dateien außerhalb des Webroot auf dem Server und fügen sie bei Bedarf einfach in ihre App ein.

    
Steven Mercatante 22.02.2010 14:36
quelle
3

Ich setze immer die Berechtigungen von Zertifikaten und anderen Dateien, die sensible Daten enthalten, so dass nur mein Entwicklungsteam und der Apache-Dienst auf die Datei zugreifen können. Dies ist wichtig, wenn Sie einen Server verwenden, der von einer großen Organisation wie einer Universität geteilt wird, in der viele Personen standardmäßig Berechtigungen für die Datei haben. Oft habe ich Leseberechtigungen für jeden Benutzer gesehen, so dass der Webserver auf die Datei zugreifen kann (da es weder der Eigentümer noch die Gruppenberechtigung für die Datei ist, bleibt nur noch "Andere" zu lesen) / p>

Stattdessen stelle ich sicher, dass es eine Gruppe gibt, die nur mein Entwicklungsteam enthält, und setze die Lese- / Schreibberechtigungen für die Datei auf diese Gruppe. Ich verwende dann ACL, um eine Leseberechtigung für den APACHE-Dienst hinzuzufügen. Sie müssen eine Zugriffssteuerungsliste verwenden, da der Besitzer und die Gruppe normalerweise auf eine Entwickler- und Entwicklerteamgruppe festgelegt sind, sodass Ihnen keine weiteren Optionen für das Festlegen des Zugriffs für einen anderen Apache als die Verwendung der Zugriffssteuerungsliste zur Verfügung stehen.

    
AaronLS 22.02.2010 14:47
quelle
0

Sicherheit durch Verschleierung:

  1. Erstelle einen eigenen Namespace mit der Funktion encoding, decode
  2. Fügen Sie auto_prepend_file in php.ini zu /usr/share/nginx/outsidetml/keystorage/83738489384828838227.php
  3. hinzu
  4. Führen Sie nginx oder apache in chroot, selinux
  5. aus
  6. Sperrliste für den Keystorage-Ordner setfacl -m user:nginx:x /usr/share/nginx/outsidehtml/keystorage/ deaktivieren
  7. add php.ini disable_class = Reflexionsfunktion disable_function = opcache_get_status, phpinfo, show_source, ini_get
  8. Um bessere Ergebnisse zu erzielen, können Sie den Schlüssel in php.ini als Wert speichern, z. B. 123key = secret64

TEST

%Vor%     
user956584 23.10.2016 15:10
quelle

Tags und Links