Das Beispiel hier ist, wenn Sie ein Formular auf einer Website hätten, das nach dem Absenden diese Informationen verwenden müsste, um zu einer speziellen URL zu gelangen, an die die Anmeldedaten angehängt waren. Sie könnten das Formular mit der Methode GET senden, aber das ist auf das typische Format ?variable=foo&variable2=bar beschränkt.
HTML-Formular
Typisches Formular mit drei Informationen, das an eine Datei namens ftp.php gesendet wird.
<form action="../processing/ftp.php" method="post">
<p><label for="ftp-company-name">Company</label><input type="text" name="ftp-company-name" id="ftp-company-name" /></p>
<p><label for="ftp-user-name">User Name</label><input type="text" name="ftp-user-name" id="ftp-user-name" /></p>
<p><label for="ftp-password">Password</label><input type="password" name="ftp-password" id="ftp-password" /></p>
<p><input type="submit" id="ftp-submit" class="button" value="submit" /></p>
</form>
PHP-Datei
Diese Datei liest die POST-Variablen (falls gesetzt), baut die URL daraus auf und leitet dorthin weiter. Wahrscheinlich sollten Sie die POST-Variablen zur Sicherheit bereinigen.
<?php
if (isset($_POST["ftp-company-name"])) {
$company = $_POST["ftp-company-name"];
$username = $_POST["ftp-user-name"];
$password = $_POST["ftp-password"];
$url = "ftp://$username:[email protected]/$company";
header( "Location: $url" ) ;
} else {
// do nothing
}
?>
Scheint ein wenig unsicher zu sein
Es ist absolut sicher. PHP ist eine sehr sichere serverseitige Skriptsprache. Dies ist ein gutes Snippet und Sie können es als Ihr FTP-Login-Formular verwenden. Seine Arbeit ist einfach: nur den gesendeten Benutzernamen, das Passwort und den Firmennamen durch die in der URL angegebenen Variablen ersetzen.
@Umar PHP ist nur sicher, wenn **Sie** die richtigen Schritte unternehmen, um es sicher zu machen. Es ist nicht automatisch.
Danke für das Tutorial!
Wie kann man Warnungen wie "Phishing" oder "betrügerische Seite" in einigen Browsern wie Safari vermeiden, wenn das Formular abgeschickt wird?
Ich muss Will zustimmen – das ist furchtbar unsicher. Die Weiterleitung führt eine "GET"-Anfrage aus, bei der das Passwort direkt in der URL steht, was Passwörter in Klartext in Serverprotokollen hinterlässt, einschließlich von Drittanbieter-Proxy-Servern. Außerdem sollten Sie jederzeit, wenn Sie ein Passwort über das Netzwerk senden, die Kommunikation auf https beschränken. Nur weil PHP _sicher_ sein _kann_, heißt das nicht, dass Sie sich keine Gedanken über grundlegende sichere Programmierpraktiken machen müssen – die Werkzeuge schützen Sie nicht vor falscher Anwendung.
Ja, Herr Allan, ich habe das Skript auf meinem Server ausprobiert und das Serverprotokoll überprüft, es hinterlässt das Passwort offen.
Ziemlich unsicher, ich stimme Allan zu. Ich habe diesen Code mit meinem Server ausprobiert, er hinterlässt Spuren in den Protokollen :(
Ich stimme den meisten Kommentaren hier zu, hängen Sie niemals eine Zeichenkette, die sofort kodiert werden sollte, an URLs an, und versuchen Sie, dies um jeden Preis zu vermeiden.
URLs, die durch Benutzereingaben gebildet werden, sind für einen bösartigen Benutzer nicht schwer, Ihren Server per DoS anzugreifen.
Es ist einfach... ...
Wir können ein verschlüsseltes Passwort mit der MD5-Algorithmus-Funktion erstellen.
$uname = mysql_escape_string($_POST[‘uname’]);
$pass = mysql_escape_string($_POST[‘pass’]);
Es ist tatsächlich auch unsicher. MD5 ist ein sehr schneller Algorithmus, was bedeutet, dass jemand Milliarden von Kombinationen auf einer einzigen GPU laufen lassen kann, um sich durch Brute-Force hineinzuhacken.
Sha512 ist der richtige Weg.
Das sieht einfach aus, ist aber anfällig für XSS-Angriffe. Dies könnte auch zu einer Datenbankinjektion führen.
Welche gute Lösungen gibt es dann, um diesen Fall zu handhaben? Ich bin neu in PHP. Danke.