<div class="question"><ol>
<li><p>Представьте себе довольно стандартный веб-сайт с аутентификацией пользователя с парой электронной почты и пароля. Что касается паролей, то он уже хранился со случайной солью, но остальные данные остаются незашифрованными.</p></li>
<li><p>Мы делаем еще один шаг вперед и шифруем конфиденциальные данные <s>пароль</s> ключ, <strong>ключ</strong>, Очевидно, приложение должно знать, что оно может расшифровать данные для своей работы.</p></li>
<li><p>мы не хотим, чтобы он был в исходном коде, поэтому он хранится в файле и читается приложением, когда это необходимо.</p></li>
<li><p>мы защитили файл, чтобы его мог прочитать только пользователь, запускающий приложение</p></li>
<li><p>(этот момент появился после некоторых обсуждений ниже) Мы уже рассмотрели покупку аппаратного HSM и обнаружили, что это невозможно (например, мы запускаем сервер на виртуальной машине)</p></li>
</ol>
<p>Таким образом, мы относительно защищены от кражи БД, верно? Однако ключ может стать известным, если кто-то получит доступ к пользователю ОС с правами чтения.</p>
<p><strong>вопрос в том, каковы наилучшие методы обеспечения безопасности такого ключа?</strong></p><!—noindex—><br><!—/noindex—>
<div class="rating">2</div><div class="tags">cryptographydynamic-websitespasswordsphpsecurity</div></div><h2 class="newh2">Решение</h2>
<div class="bestanswer" itemscope itemtype="http://schema.org/Answer" itemprop="acceptedAnswer"><p>Купите аппаратный модуль безопасности и держите в нем ключ. Ключ не сможет быть прочитан.</p>
<p>Юби делает HSM по разумной цене. 500 долларов, если я правильно помню.</p>
<p>Пока мы здесь, ваш db-сервер должен находиться в другом блоке в другой сетевой зоне, чем ваш веб-сервер.</p>
<div class="best_rating">3</div></div><h2 class="newh2">Другие решения</h2>
<p>Других решений пока нет …</p>
<div class="source"><a href="https://stackoverflow.com/questions/31490275/how-to-protect-a-site-wide-secret-key">Источник</a></div>