Ihr Code sieht sicher aus, aber Ihr Design benötigt möglicherweise etwas Arbeit.
SQL Injection
Der gefährliche Teil des Codes ist alles in der Datenbank in der Speicherung oder die Benutzer zeigen etwas wird, dass von dem Benutzer gesammelt. Der Teil, mit dem Sie vorsichtig sein müssen, tritt also vor Ihrem Beispiel auf. Stellen Sie sicher, dass Sie alle Daten, die Sie vom Benutzer erfassen, einschließlich des Kennworts und der Anzeigeninformationen, überprüfen, filtern und ausschließen.
Encryption
Der Vorteil des Passworts in der Datenbank gespeichert ist, dass Sie der Benutzer das Passwort per E-Mail abrufen lassen kann oder andere Mittel, wenn sie es verlieren. Wenn Sie jedoch Kennwörter speichern, sollten Sie sie verschlüsselt mit einem geheimen Schlüssel speichern, damit, wenn jemand den Lesezugriff auf Ihre Datenbank steuern kann, sie nicht alle Kennwörter im Nur-Text-Format lesen können. Trotzdem müssen Sie den geheimen Schlüssel irgendwo speichern, und wenn jemand Ihren geheimen Schlüssel bekommt und Zugriff auf Ihre Datenbank hat, hat er Zugriff auf alle Passwörter.
Hashwerte (empfohlen)
Es ist am beste Praxis und sicherer nur eine Möglichkeit, Hash-Werte zu speichern (SHA1 oder SHA256) der Passwörter in der Datenbank anstelle der tatsächlichen Passwörter. Auf diese Weise können Sie das Passwort nicht abrufen. Hash-Werte sind absichtlich eine Möglichkeit, indem einige der Daten weggeworfen werden.
Anstatt das ursprüngliche Passwort des Abrufens, hash Sie das Kennwort, das der Benutzer eingibt und den Hash-Wert mit dem gespeicherten Hash-Wert zu vergleichen, um zu sehen, ob es passt. Wenn der Benutzer in diesem Fall das Kennwort verliert, senden Sie dem Benutzer ein neues, nach dem Zufallsprinzip generiertes Kennwort, anstatt das Kennwort an den Benutzer zu senden.
Wenn Sie nur den Hash-Wert speichern, werden Ihre Daten noch weiter geschützt. Selbst wenn der Benutzer Lesezugriff auf Ihre Datenbank hat, bieten die Hashwerte keinen Vorteil und es gibt keinen geheimen Schlüssel, der alle Ihre Hashwerte entsperrt.
Wenn Sie die Kennwörter hashen, achten Sie darauf, einen zufälligen Salt-Wert zu verwenden und das Salz zu speichern, um Ihre Liste der Hashes gegen Rainbow-Angriffe zu schützen.
Zusammenfassung
Manchmal bekommt man nicht das Passwort zu wählen. Manchmal kommt das Passwort von einem anderen System, so dass Sie nicht immer die Wahl haben, und manchmal verlangen Ihre Vorgesetzten (vielleicht sogar die Benutzer), dass sie Kennwörter abrufen können. Wenn möglich, sollten Sie jedoch die sicherere Option wählen .
Beachten Sie, dass all diese Verschlüsselungs- und Hash-Wert-Geschäfte Ihren Server nur teilweise vor Personen schützen, die schreibgeschützten Zugriff auf Ihre Daten erhalten. Manchmal reicht es aus, wenn Sie Ihre Daten erhalten, wenn der Benutzer den Passwort-Hash lesen kann. Kann er dann Ihre Kreditkartennummern lesen?
Sie müssen Ihre Datenbank schützen. Haben Sie ein sicheres Passwort auf Ihrem Datenbanksystem? Erlauben Sie nur lokalen Zugriff auf Ihre Daten? Haben Sie einen Datenbankbenutzer mit den wenigsten Berechtigungen für die Verwendung in Ihrer Anwendung erstellt? Schützen Sie sich ordnungsgemäß vor SQL Injection- und Scripting-Angriffen?
Wenn jemand Lese- und Schreibzugriff auf Ihre Daten hat, wird das gesamte Passwortgeschäft strittig.
Bitte tel Ich habe Sie nicht ihr tatsächliches Passwort in MySQL gespeichert ... – animuson
Ja, ich tue, aber hey, die Website ist noch nicht online, in der Entwicklung ... Ich fange gerade an der Sicherheitsfront jetzt ... Wie sollte Ich rette es dann? –
@animuson ist es so wichtig für die Kleinanzeigen-Website? –