Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sicherheitsfragen für dynamische Websites (PHP+MySQL)

Weitere Punkte, über die Sie nachdenken sollten:

1. Sie sind anfällig für Bruteforce

Ein Wörterbuchangriff würde Ihr Passwort knacken. Da die überwiegende Mehrheit der Benutzer ein unsicheres Passwort hat, ist es nur eine Frage der Zeit. Verwenden Sie Captcha oder protokollieren Sie ungültige Einträge. Oder fügen Sie eine Verzögerung hinzu, wenn das Passwort falsch ist.

Wie Col. Shrapnel sagte, ist ein Regenbogentisch für Sie kein Problem, da er verwendet wird, wenn jemand eine Menge Haschisch hat und sie knacken möchte. Salz wird verwendet, um einen gewissen Schutz gegen einen Regenbogentisch zu erlangen, und das ist nicht Ihr Fall.

2. Sie senden Passwörter im Klartext

Wenn jemand Ihr Login (z. B. WLAN) ausspioniert, sind Sie dem Untergang geweiht. Es gibt einige Javascript-Bibliotheken, die alles mit öffentlichen Schlüsseln verschlüsseln können. Wenn Sie kein SSL verwenden möchten, verschlüsseln Sie das Login/Passwort, senden Sie es an den Server, entschlüsseln Sie es mit dem privaten Schlüssel und Sie sind sicherer.

3. Erwägen Sie die Verwendung vorbereiteter Anweisungen in MySQL

Die Verwendung vorbereiteter Anweisungen hilft gegen die SQL-Injection, da sie auch bei böswilliger Eingabe sicher ausgeführt werden kann:

$dbc = new mysqli("mysql_server_ip", "mysqluser", "mysqlpass", "dbname");
$statement = $db_connection->prepare("SELECT * FROM table WHERE thing='?'");
$statement->bind_param("i", $thing);
$statement->execute();

4. Verlassen Sie sich nicht auf die clientseitige Validierung

Auf Ihrem Anmeldeformular leiten Sie eine Javascript-Funktion ein, die verhindert, dass die Eingabetaste funktioniert. Was ist, wenn ich Javascript deaktiviere? Sie könnten ein verstecktes Feld verwenden (z. B. ), Ihre Funktion verwenden, um die Eingabetaste zu verhindern, UND eine onSubmit()-Funktion verwenden, um FormIsValid zuvor auf 1 zu ändern Senden des Formulars. Überprüfen Sie auf Ihrem Server FormIsValid.

5. Sie sind anfällig für Session-Hijacking

Ihre Sitzung wird in einem Cookie mit dem standardmäßigen Namen PHPSESSID gespeichert. Wenn ein Angreifer dieses Cookie erhalten kann, könnte er es an Ihren Server senden und Ihre Sitzung stehlen. Um dies zu verhindern, können Sie die Benutzer-IP-Adresse und den Benutzeragenten in der Sitzung speichern und den von der Sitzung erhaltenen Wert bei jeder Anfrage vergleichen. Wenn die Werte nicht übereinstimmen, hat sich die Benutzer-IP möglicherweise geändert oder die Sitzung wurde möglicherweise gekapert.

6. Sie können anfällig für Sitzungsfixierung sein

Wie oben erwähnt, wenn jemand Ihren Administrator davon überzeugt, auf eine Site zuzugreifen, und diese Site eine Anfrage an Ihre Site mit einer PHPSESSID auf die Anfrage sendet, würde Ihre Site die Sitzung erstellen, das Login/Passwort verarbeiten und angeben, dass die Anmeldeinformationen falsch sind . Bis jetzt nicht schlecht.

Später meldet sich Ihr Administrator bei Ihrem Portal an, die Sitzung besteht bereits, der Benutzername und das Kennwort stimmen überein, und die Sitzung wird AKTUALISIERT. Die Variable gültig jetzt ist 1.

Sobald die Variablen aktualisiert sind, hat der Angreifer vollen Zugriff auf Ihr Portal, da er die PHPSESSID kennt, verhindert Ihre Website weder Session-Hijacking noch Session-Fixation.

Um Sitzungsfixierung und -hijacking zu vermeiden, siehe Punkt 5.