Bermuda
Новичок
Данные которым можно доверять
На днях меня осенила одна параноидальная идея.
Есть база данных, есть пользователь с паролем который туда логинится и имеет какой-либо набор привелегий. Короче все как обычно. Может случиться так, что у хостера окажется где-либо дырка и какой-нибудь кулхацкер поменяет данные в базе, например пополнит свой баланс.
Вопрос: почему можно доверять данным базы данных? Или по-другому: как реализовать цифровую подпись данных в базе?
Шифровать данные, например, с помощью md5 не прокатывает, так как нужно их еще будет читать.
Есть частичное решение:
$подпись_текущей_записи = md5 ($значение_1 + ... + $значение_n + $секретная_переменная);
после чего пихаем в базу:
INSERT INTO имя_таблицы SET value_1 = '$значение_1', ..., value_n ='$значение_n', podpis = '$подпись_текущей_записи';
Потом при чтении записи из базы проверяем условие:
if ($podpis <> md5 (value_1 + ... + value_n + $секретная_переменная))
то таким данным доверять нельзя.
Скажите а смысл?
Смысл в том, что теперь не нужно прятать все данные в базе, достаточно куда-нибудь задевать $секретную_переменную.
Короче вопрос в том, почему мы должны доверять данным в базе данных.
Решив этот вопрос частично снимется проблема дырявых скриптов работающих с базой данных, так как в случае изменения данных в базе кулхацкером они уже не будут доверяемыми.
У кого-нибудь есть мысли на эту тему?
На днях меня осенила одна параноидальная идея.
Есть база данных, есть пользователь с паролем который туда логинится и имеет какой-либо набор привелегий. Короче все как обычно. Может случиться так, что у хостера окажется где-либо дырка и какой-нибудь кулхацкер поменяет данные в базе, например пополнит свой баланс.
Вопрос: почему можно доверять данным базы данных? Или по-другому: как реализовать цифровую подпись данных в базе?
Шифровать данные, например, с помощью md5 не прокатывает, так как нужно их еще будет читать.
Есть частичное решение:
$подпись_текущей_записи = md5 ($значение_1 + ... + $значение_n + $секретная_переменная);
после чего пихаем в базу:
INSERT INTO имя_таблицы SET value_1 = '$значение_1', ..., value_n ='$значение_n', podpis = '$подпись_текущей_записи';
Потом при чтении записи из базы проверяем условие:
if ($podpis <> md5 (value_1 + ... + value_n + $секретная_переменная))
то таким данным доверять нельзя.
Скажите а смысл?
Смысл в том, что теперь не нужно прятать все данные в базе, достаточно куда-нибудь задевать $секретную_переменную.
Короче вопрос в том, почему мы должны доверять данным в базе данных.
Решив этот вопрос частично снимется проблема дырявых скриптов работающих с базой данных, так как в случае изменения данных в базе кулхацкером они уже не будут доверяемыми.
У кого-нибудь есть мысли на эту тему?