sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor skal mysqli_connect() modtage adgangskodeparameteren uden kryptering?

Du som bruger ved ikke, hvordan adgangskoden er krypteret (den er faktisk slet ikke krypteret, men hashed).

Du sender blot adgangskoden, og MySQL kan udføre den samme hashing som på den originale adgangskode og sammenligne den med det, der er gemt. Hvis du passerer den hash-version, er hele fordelen ved hashing væk:Hvis nogen får hashen fra serveren, kan de bare bruge dem til at logge ind, som om de var normale adgangskoder. Hash'en er så blevet til adgangskoden.

Ekstra fordel er, at MySQL, fordi den har den originale adgangskode, kunne genhash den med en bedre algoritme, tilføje en smule salt og gemme den forbedrede version. Hvis det aldrig bliver originalen, kan det ikke lade sig gøre. PHP's adgangskodefunktioner støtte også dette. Du kan tjekke med password_needs_rehash hvis en hashed adgangskode stadig er hashed korrekt, og opdater din database, hvis den ikke er det.

Så for sikkerheden skal du tage andre forholdsregler. Disse er i det mindste:

  • Gem adgangskoden i en include-fil, der findes uden for dokumentroden. På den måde kan ingen åbne filen direkte.
  • Du kan forhindre, at include-filer åbnes uden at blive inkluderet (f.eks. ved at tjekke efter en define, der blev sat i index.php). Det er rart, men hvis PHP fejler på grund af en konfigurationsfejl, kan folk bare gennemse filens kilde, så hold den forrige regel.
  • Opret altid en speciel databasebruger. Brug ikke root . Giv denne bruger lige nok ret til at betjene databasen, men ikke mere. Ingen rettigheder til at droppe tabeller for eksempel.
  • Giv altid denne bruger en unik adgangskode. Du behøver ikke at huske denne adgangskode. Bare generer tilfældigt affald med masser af tegn.
  • Skift adgangskoden regelmæssigt. Måske kunne du endda scripte det og gemme den opdaterede adgangskode i konfigurationen.



  1. Vælg kun unikke værdier fra en kolonne i kodetænder

  2. Jquery datepicker med Ajax virker ikke

  3. Implementering af Optimistic Locking i Oracle

  4. World Backup Day:Hvordan og hvornår skal du sikkerhedskopiere din database?