Доброго времени суток, возникло несколько вопросов по теме кодирования данных.
Есть кодирование данных, работает следующим образом:
- Человек заносит в форму необходимый текст
- Текст обрабатывается и кодируется с использованием ключа (допустим SAY1TEXT2INFO3CRYPT4CODE5)
- итог записывается в БД
При выводе сообщений используется обратный алгоритм действий с использованием того же ключа, если ключ не верный или вообще отсутствует получаем либо ошибку, либо непонятный набор букв и цифр.
Вопрос, как спрятать ключ и где хранить, что бы даже если появился доступ к скрипту и бд у плохих людей, они не смогли раскодировать данные без этого ключа?
gerasim_mumu, существуют системы управления ключами, key manegement system. Можете посмотреть на популярную keycloack, например. Но возможно это слишком сильно для вашего проекта, опишите подробнее, что вы хотите сделать.
Stalker_RED, Да, это через чур сильно для моего проекта. Я просто хочу разобраться в плане безопасности.
Есть данные которые нужно хранить безопасно, а если представить что данные попали в плохие руки, нужно сделать так, что бы они не поняли что с этим делать, соответственно здесь встает вопрос о кодирование данных которые поступают от пользователя. Самый лучший способ кодирования - это применение ключей (мб я не прав, поправьте), а как хранить и где хранить эти ключи не понимаю.
gerasim_mumu, худший вариант - хранить вместе с данными, в БД. Тогда при утечке БД злоумышленники сразу получают данные.
Чуток получше хранить в коде - просто в константе. Если утекла только БД - без кода они не получат данные.
Еще лучше хранить в конфиге, который не заносится в систему контроля версий. Тогда если утащили, к примеру, бекап БД и код из системы контроля версий - все равно не взлетит, потому что конфиг хранится где-то отдельно. Но это не поможет, когда данные воруют с боевого сервера, там же есть конфиг.
Также можно хранить в операционной системе, в переменных окружения, например. Заполучив базу, код и конфиги. но "забыв" о переменных окружения злоумышленники опять-таки ничего не получат.
Но если они "грабят" не бекап, а живой работающий сервер, то что кроме забывчивости их остановит? printenv > env.txt, и готово.
Ну а если по взрослому, то key management system, разные ключи для разных данных, соль для разных записей, и так далее, в зависимости от требований.
Ну и защита по принципу Неуловимого Джо отлично работает на небольших проектах.
Stalker_RED, Есть такой вариант (если я в чем то ошибаюсь, прошу поправить, а не смеяться).
1. Сайт расположен на серверах РФ.
2. Сам ключ (key.txt) хранится на сервере в Финляндии (например) и доступен к прочтению (с помощью того же php, по средствам api (key-identifical.php) и использованию только при условии, что совпадает ключ доступа (вписан в код php, на сервере РФ (sys-key-identifical.php)) и обязательная проверка по ip и домену сайта (то есть на домене отличном от запрашиваемого не работает).
Это просто мысли и к практике перейду, только при условии что то возможно и действительно безопасно.
Хотелось бы и понять в принципе, возможно сделать так?
gerasim_mumu, если вам для развлечения или для поднятия собственных скиллов - самоделки лучше.
А бизнес предпочтет решение из коробки, с документацией, тестами, и все такое.