У вас есть web-сервер, в базе данных есть таблица, которая описывает зарегистрированного пользователя.
В этой таблице находится поле «сумма на счете».
Это может быть интернет-магазин, онлайн-игра и т.д.
Несмотря на явное отсутствие sql-инъекций необходимо контролировать сумму на счете пользователя.
Представим, что нехороший человек смог пополнить себе счет, и начинает (в случае онлайн-игры) покупать дорогие предметы (на нашу внутреннюю валюту) и делать другие не очень хорошие вещи.
Чтобы обезопасить себя от подобного, я предлагаю использовать следующий простейший алгоритм:
1. В таблице создать дополнительное поле, которое будет хранить специальным образом сформированную md5 сумму для счета пользователя.
2. Перед каждой денежной транзакцией проверять валидность денежной суммы с помощью md5 суммы.
3. В случае, если проверка не пройдет, не выполнять транзакцию и посылать уведомление администрации, иначе все в порядке и можно выполнять транзакцию.
4. После каждой транзакции обновлять md5 сумму.
Пример кода приведен на языке php:
Создание переменной $hash:
Перед любой денежной транзакцией необходимо делать проверку:
В этой таблице находится поле «сумма на счете».
Это может быть интернет-магазин, онлайн-игра и т.д.
Несмотря на явное отсутствие sql-инъекций необходимо контролировать сумму на счете пользователя.
Представим, что нехороший человек смог пополнить себе счет, и начинает (в случае онлайн-игры) покупать дорогие предметы (на нашу внутреннюю валюту) и делать другие не очень хорошие вещи.
Чтобы обезопасить себя от подобного, я предлагаю использовать следующий простейший алгоритм:
1. В таблице создать дополнительное поле, которое будет хранить специальным образом сформированную md5 сумму для счета пользователя.
2. Перед каждой денежной транзакцией проверять валидность денежной суммы с помощью md5 суммы.
3. В случае, если проверка не пройдет, не выполнять транзакцию и посылать уведомление администрации, иначе все в порядке и можно выполнять транзакцию.
4. После каждой транзакции обновлять md5 сумму.
Пример кода приведен на языке php:
Создание переменной $hash:
/*
$hash - хэш-сумма
$sum - сумма на счете пользователя
$salt - переменная "соль" (используется для вычисления md5-суммы, длина около 10-15 символов). Переменная необходима для того, чтобы в случае получения злоумышленником md5-суммы, была высокая сложность восстановления переменной $sum, используя радужные таблицы
*/
$hash = md5($salt . $sum);
Перед любой денежной транзакцией необходимо делать проверку:
// вычисляем текущую md5 сумму
// $sum и $hash считываем из базы данных
if(md5($salt . $sum) === $hash)
{
// выполняем транзакцию
// ...
// формируем новую md5-сумму
// считываем из базы данных (или на основании данных из предыдущего шага) новую сумму на счете пользователя ($new_sum)
$new_md5sum = md5($salt . $new_sum);
// обновляем значение md5 суммы в таблице базы данных для пользователя (теперь оно равно $new_md5sum)
// ...
}
else
{
// не выполняем транзакцию. Отправляем уведомление администрации
// ...
}
Комментариев нет:
Отправить комментарий