SQL запрос с ключом в нем (как Уэсли Марч suggests) не является хорошей идеей. Если вы делаете:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
... и запрос получает вход (slowlog для инст.) Ваш безопасный секретный ключ захватывается в виде обычного текста, который никогда не должно произойти. Такой запрос с секретным ключом будет также отображаться при запуске запроса, например, SHOW PROCESSLIST
.
Следующая проблема, где хранить защищенный ключ? В PHP-файле? Это снова простой текст.
Шифрование данных:
Использование частных/шифрования с открытым ключом (http://en.wikipedia.org/wiki/Public-key_cryptography). PHP имеет неплохую поддержку.
- Открытые ключи могут храниться у пользователя в БД, это общедоступно.
- Закрытый ключ может быть зашифрован с помощью пароля пользователя. Когда пользователь входит в систему, вы дешифруете закрытый ключ и храните его в своих файлах cookie (если вы используете SSL, это не так плохо) или сеанс. Оба не идеальны, но лучше обычного текста в php-файле.
- Используйте открытый ключ для шифрования, закрытый ключ для дешифрования.
- Только у пользователя будет доступ к его данным.
Если вы хотите узнать больше, вы можете использовать Google «пользовательское шифрование» или «нулевую конфиденциальность информации».
SQL вставки/XSS:
Лучшая защита является безопасным приложением. Без сомнений. Если вы хотите его защитить, вы можете использовать для inst PHP IDS для обнаружения атак: https://github.com/PHPIDS/PHPIDS
У меня неплохой опыт работы с ним.
Если вы хотите, чтобы он был защищен, он должен быть зашифрован в базе данных MySQL не только во время транзита. – Jon
Если он может быть расшифрован вами, его можно вообще расшифровать тем, кто имеет доступ к вашей базе данных. Может быть, вам нужно нанять профессионала? – sjdaws
Это ужасно широкий вопрос, Джейкоб. Можете ли вы сосредоточить его еще? Если вас больше интересует сквозное шифрование (почему? Для обеспечения конфиденциальности? Чтобы ваши пользователи доверяли, что они отправляют данные в нужную единицу?), Затем извлеките другие биты. Какова ваша предыстория в этой области? Если этого мало, то позвольте мне смиренно предположить, что вы делаете какое-то автономное чтение - любая помощь, которая может вписаться в ответ SO, не поможет. [OWASP] (https://www.owasp.org/index.php/Category:OWASP_Guide_Project) - хорошее место для начала. –