Модел на шифрирано складирање
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Модел на шифрирано складирање
Референца за `security.database.storage.php` со подобрена типографија и навигација.
Модел на шифрирано складирање
SSL/SSH protects data travelling from the client to the server: SSL/SSH does not protect persistent data stored in a database. SSL is an on-the-wire protocol.
SSL/SSH ги штити податоците што патуваат од клиентот до серверот: SSL/SSH не ги штити постојаните податоци зачувани во базата на податоци. SSL е протокол на жица.
Откако напаѓачот ќе добие директен пристап до вашата база на податоци (заобиколувајќи го веб-серверот), зачуваните чувствителни податоци може да бидат откриени или злоупотребени, освен ако информациите не се заштитени од самата база на податоци. Шифрирањето на податоците е добар начин за ублажување на оваа закана, но многу малку бази на податоци нудат овој вид на шифрирање податоци. PHP scripts. PHP Најлесниот начин да се заобиколи овој проблем е прво да се создаде сопствен пакет за шифрирање, а потоа да се користи одвнатре OpenSSL and Натриумможе да ви помогне во ова со неколку екстензии, како што се
, покривајќи широк спектар на алгоритми за шифрирање. Скриптата ги шифрира податоците пред да ги внесе во базата на податоци и ги дешифрира при преземањето. Погледнете ги референците за понатамошни примери за тоа како функционира шифрирањето.
Хеширање
На password Во случај на навистина скриени податоци, ако неговата сурова репрезентација не е потребна (т.е. нема да биде прикажана), треба да се земе предвид хеширањето. Добро познат пример за хеширање е складирањето на криптографската хеш на лозинка во базата на податоци, наместо самата лозинка.
password_hash() функциите обезбедуваат удобен начин за хеширање на чувствителни податоци и работа со овие хешови. password_verify() се користи за хеширање на даден стринг користејќи најсилниот алгоритам што е моментално достапен и
проверува дали дадената лозинка се совпаѓа со хешот зачуван во базата на податоци.
<?php
// storing password hash
$query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
pg_escape_string($username),
password_hash($password, PASSWORD_DEFAULT));
$result = pg_query($connection, $query);
// querying if user submitted the right password
$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 'Welcome, ' . htmlspecialchars($username) . '!';
} else {
echo 'Authentication failed for ' . htmlspecialchars($username) . '.';
}
?>