filament
Erfahrenes Mitglied
Aus Datenschutz hätte ich die IP gehashed und dann verglichen. Dann kann ich diese nicht direkt einsehen, aber prüfen ob es sich um die selbe IP handeltWenn ein angemeldeter Benutzer eine SessionID präsentiert, welche durch einen Login durch IP a.b.c.d erstellt wurde, dann kann er nicht plötzlich von der IP w.x.y.z kommen. Das bedeutet im Regelfall, dass die SessionID geklaut wurde. In dem Falle einfach die präsentierte SessionID löschen (session_destroy() oder noch besser: Eine spezielle Fehlermeldung drin speichern und diese dem legitimen Benutzer zeigen. Gleichzeitig natürlich dafür sorgen, dass dieser nicht mehr eingeloggt ist)
Hierbei aber nicht die komplette IP speichern (Datenschutz) und vergleichen, sondern nur die ersten 2 oder 3 Blöcke. Idealerweise sollte die Einstellung vom Benutzer festgelegt und auch komplett abschaltbar sein.
Okay ich dann kille ich also die Session. Sollte ich auch die Session des echten Users killen? Wenn ja wie komme ich an diese ran?
Macht es dann mehr Sinn den Account zu sperren und zusätzlich zu prüfen bei jedem Aufruf ob ein Account gesperrt ist? Wobei das ja eine hohe Datenlast für die Datenbank hat, oder? Dann müsste ich nicht zwangsläufig auf die Session zugreifen.
Das war nur eine Idee, dass ich den dazu nutzen könnte, um den Aufwand gering zu halten.Wenn du den aber auch als Passwort zum ver- und entschlüsseln verwenden willst, dann wirds etwas tricky. Dann sollte dieser nicht so einfach in der Datenbank am Benutzer hängen sondern extra geschützt wo anders. Ausserdem sollte sich der Salt normalerweise bei jeder Passwortänderung auch ändern. Wenn du hiermit dann irgenwas verschlüsselt hast, dann kommst du da nicht mehr dran.
Extra Tabelle für die Verschlüsselungs-Schlüssel, mit extra Benutzer und Passwort. Am besten auch von einem extra Service aus anzusprechen, nicht von deiner Hauptanwendung aus drauf gehen. Der Extraservice bietet eine definierte Schnittstelle an und gibt die Schlüssel niemals raus. Zum Beispiel nur per REST ansprechbar, "verschlüssele Datei X für den Benutzer Y" oder "entschlüssele Datei Z für Benutzer X und liefere Daten".
Reicht denn für das verschlüsseln und entschlüsseln theoretisch auch ein Passwort das ich für alle User nutze? Oder wäre es zu unsicher?
Ich möchte meinen Usern eine Funktion zur Verfügung stellen, wo sie nur bestimmten anderen Usern Ihre Email und ggfs. Handynummer freigeben. Diese sollen halt aber wirklich nur von diesem User lesbar sein und eben nicht als Klartext in der Datenbank stehen. Wobei das mit Email vielleicht übertrieben ist, weil die Email im Feld Email ja als Klartext steht.
Wie mache ich das denn? Gibt es eine spezielle Funktion dafür?Natürlich kannst du den Salt auch per SQL erzeugen lassen, dieser muss nicht kryptografisch sicher sein.