Это смесь обоих. Два существующих ответа (в то время я написал https://stackoverflow.com/a/10718397/1015483 и https://stackoverflow.com/a/10718459/1015483) справедливы - вы должны смотреть на около 5 способов возможного нападения, что я могу думать
- Они получают доступ к БД сервера; так что да, обеспечьте, чтобы ребенок был настолько же разумным (ответ Мэтта)
- Автономный захват данных (кто-то добирается до ваших данных базы данных как-то иначе, может быть резервной, может быть, они угадывают пароль, может быть MITM, если вы переводите данные из одного места в другое). Для этого вы делаете encypt свои данные. По какой-то причине вы также можете сделать свалку CSV и отправить кому-то электронное письмо. Упс. Но это происходит.Так зашифровать (ответ vlzvt в)
Но три элемента не упомянутые:
- Они могли бы получить доступ к веб-серверу (если он отличается от БД сервера). Если у них есть доступ к веб-серверу, все ставки отключены, так как у них есть свой пароль, ключ-ключ к успеху. Поэтому вам нужно сделать это еще более безопасным, чем сервер БД. (Мэтт, возможно, имел в виду, что выше, но просто дайте понять)
- Как и выше, но не следует забывать, является ли кто-то доступ к phpMyAdmin или вашему консулу управления. Не используйте для доступа доступ к открытым паролям с открытым текстом или конфигом.
- Наконец-то есть ваше приложение (и самое сложное для блокировки). Вам нужно предотвратить использование инъекций SQL, которые могут выявить данные. Шифрование данных остановило бы минимизацию проблем, если бы кто-то действительно получал доступ через незапрашиваемый запрос - поэтому для этого шифрование является решением.
Для части 2 Ваш вопрос:
Использование MySQL шифрования/дешифрования функции остановит кого-то, кто имеет доступ к необработанным данным, но не MITM или SQL инъекции или даже CSV дампы приняты для транспорта ,
Итак, IMO (и это только мое мнение и то, как я это сделал) - это зашифровать с помощью PHP и зашифровать зашифрованные данные по проводу, поскольку это останавливает все методы захвата данных и свалку CSV будет «скремблироваться».
Если вы это сделаете, вы также можете использовать типы varbinary/blob, так как это не позволяет вам случайно читать/редактировать в phpMyAdmin. Плюс потенциально экономит несколько байт номинально (хотя это зависит от индексов и других вещей, так что один не является выигрышным аргументом).
И теперь нижняя сторона: поиск и сортировка. Все, что вы индексируете или выполняете поиск, если оно зашифровано, будет соответствовать только всей, точной, чувствительной к регистру строке, заполненной до нужной длины (обычно поиск будет нечувствительным к регистру, и вы можете выполнять поиск деталей с помощью LIKE). И если вы хотите ORDER BY, вам нужны исходные строки. Так что не стоит иметь в виду при проектировании структуры.
Надеюсь, что это поможет.
Это очень зависит от вашего приложения. – eggyal
да, это зависит от того, какие данные вам нужно хранить, – jugnu