Я делаю заявку на работу для компании, в которой я работаю. У меня есть защита от SQL-инъекций и некоторых методов XSS. Моя основная проблема заключается в том, чтобы обеспечить конфиденциальную конфиденциальную информацию, такую как SSN и адрес, потому что компания нуждается в том, чтобы сделать 1099 форм для налогов продавцов.
Я не знаю, как сделать эту часть, но должен ли я шифровать все, а затем расшифровывать ее, когда она попадает в базу данных MySQL?
Это слишком упрощенный ответ, и его следует принимать с солью, поскольку большинство ответов о безопасности:
Использовать SSL везде.
Используйте защищенный ключ шифрования
Для хранения зашифрованных данных вы можете использовать поле BLOB
и использовать встроенные функции шифрования MySQL. Пример:
update mytable set myfield = AES_ENCRYPT('some value', SHA2('your secure secret key', 512));
Если вы предпочитаете делать шифрование / дешифрование в коде приложения, взгляните на функции Mcrypt PHP.
Это далеко не полное руководство, но это начало и лучше, чем ничего не делать.
Вы можете узнать больше на https://security.stackexchange.com/
SQL-запрос с ключом в нем (как предлагает Уэсли Мерч) – не очень хорошая идея. Если вы это сделаете:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
… и запрос регистрируется (slowlog for inst.) ваш секретный секретный ключ фиксируется в виде обычного текста, чего никогда не должно быть. Такой запрос с секретным ключом также будет отображаться при запуске запроса, например SHOW PROCESSLIST
.
Следующая проблема, где хранить защищенный ключ? В PHP-файле? Это снова простой текст.
Шифрование данных:
Используйте шифрование частного / открытого ключа ( http://en.wikipedia.org/wiki/Public-key_cryptography ). PHP имеет неплохую поддержку.
Если вы хотите узнать больше, вы можете использовать Google «пользовательское шифрование» или «нулевую конфиденциальность информации».
Вставка SQL / XSS:
Лучшая защита – это безопасное приложение. Без сомнений. Если вы хотите его защитить, вы можете использовать для inst PHP IDS для обнаружения атак: https://github.com/PHPIDS/PHPIDS
У меня неплохой опыт.
Как видно из комментариев, вы задаете огромный вопрос. Вам нужно будет изучить ряд отдельных вопросов:
Трудно было бы рассмотреть их все в одном ответе. Я бы предложил выполнить некоторые поиски на этом сайте по темам, упомянутым выше.