Encrypted Storage Model
Krypterad lagringsmodell
SSL/SSH skyddar data som överförs från klienten till servern: SSL/SSH skyddar inte ihållande data som lagras i en databas. SSL är ett protokoll för dataöverföring.
När en angripare får direkt tillgång till din databas (och kringgår webbservern) kan lagrad känslig data bli exponerad eller missbrukad, om inte informationen skyddas av själva databasen. Att kryptera datan är ett bra sätt att mildra detta hot, men väldigt få databaser erbjuder denna typ av datakryptering.
Det enklaste sättet att kringgå detta problem är att först skapa ditt eget krypteringspaket och sedan använda det i dina PHP-skript. PHP kan hjälpa dig med detta genom flera tillägg, såsom OpenSSL och Sodium, som täcker en mängd olika krypteringsalgoritmer. Skriptet krypterar datan innan den sätts in i databasen, och dekrypterar den vid hämtning. Se referenserna för ytterligare exempel på hur kryptering fungerar.
Hashning
När det gäller verkligt dold data, om dess råa representation inte behövs (dvs. inte kommer att visas), bör hashning övervägas. Det välkända exemplet för hashning är att lagra den kryptografiska hashen av ett lösenord i en databas, istället för själva lösenordet.
Lösenordsfunktionerna tillhandahåller ett bekvämt sätt att hashkänslig data och arbeta med dessa hashar.
`password_hash()` används för att hashvärdera en given sträng med den starkaste algoritmen som för närvarande finns tillgänglig, och `password_verify()` kontrollerar om det givna lösenordet matchar hashen som lagras i databasen.
Exempel #1 Hashning av lösenordsfält
<?php
// lagring av lösenordshash
$query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
pg_escape_string($username),
password_hash($password, PASSWORD_DEFAULT));
$result = pg_query($connection, $query);
// kontrollera om användaren skickade in rätt lösenord
$query = sprintf("SELECT pwd FROM users WHERE name='%s';",
pg_escape_string($username));
$row = pg_fetch_assoc(pg_query($connection, $query));
if ($row && password_verify($password, $row['pwd'])) {
echo 'Välkommen, ' . htmlspecialchars($username) . '!';
} else {
echo 'Autentisering misslyckades för ' . htmlspecialchars($username) . '.';
}
?>
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/security.database.storage.php
PHP
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.