2016-06-07 4 views
0

Ich benutze PHPMailer, um E-Mails in PHP mit SMTP mit Benutzername & Passwort Autorisierung zu senden.Speichern Sie eine sensible ini-Datei (für PHPMailer-Anmeldeinformationen) in inetpub aber außerhalb von wwwroot in IIS - ist es "öffentlich"?

Es funktioniert gut, aber ich bin besorgt über die harte Codierung der SMTP-Benutzername & Passwort in der PHP-Datei.

Andere Gewinde auf Stack-Überlauf haben vorgeschlagen,

So „den Benutzernamen & Passwort in einer‚ini‘Datei außerhalb des Web-Servers/Document-Root-Speicherung“ Ich habe es in inetpub gespeichert haben, aber vor wwwwroot. Z.B. E: \ inetpub \ smtp.ini

Wo, wie meine Webseiten in E gespeichert sind: \ inetpub \ wwwroot \ exampleWebsite

Meine Frage ist: Ist meine smtp.ini Datei gespeichert in einem 'nicht-öffentlichen' Bereich ? Mit anderen Worten: Wenn ein Website-Benutzer auf wwwroot zugreifen kann, kann er auch auf eine Datei in inetpub zugreifen? Oder gibt es einen besseren Ordner/Unterordner, in dem ich ihn speichern sollte?

Mein PHP-Code ist wie folgt:

$path = realpath('/inetpub/smtp.ini'); 
$config = parse_ini_file($path, true); 
$mail = new PHPMailer(true); 
$mail->isSMTP(); 
$mail->Host = 'outlook.office365.com'; 
$mail->SMTPAuth = true; 
$mail->Username = $config['smtp']['un']; 
$mail->Password = $config['smtp']['pw']; 
// ... rest of mail function ... 
$mail->send(); 

Antwort

1

Was Sie tun, ist sicher: die Datei außerhalb des Web-Root ist und so keine externe URL (vorausgesetzt der Server erlaubt keine dumme Dinge wie Lassen relative URLs aus dem Webstamm wie ../../smtp.ini gehen). Man könnte es, indem sie es zu nichts machen schützt weiter, zum Beispiel durch eine Zeile wie diese am Anfang Hinzufügen und dann als .php Datei zu speichern:

;<?php return false; 

Das sieht aus wie ein harmloser Kommentar in eine INI-Datei Parser, erzeugt aber eine leere Seite, wenn auf sie als PHP-Datei zugegriffen wird.

+0

Große Antwort, danke! – 100pic

Verwandte Themen