Что лучше: экранировать / кодировать вводимые пользователем данные перед их сохранением в базе данных или сохранять их в том виде, в каком они есть в базе данных, и экранировать их при извлечении?

Я использую функцию htmlspecialchars () для предотвращения атак XSS. У меня есть сомнения относительно того, какой из следующих способов хранения данных в базе данных лучше.

Метод 1: Сохраните введенные пользователем значения после применения функции htmlspecialchars () . При использовании этого пользовательского ввода «<скрипт>» станет «<скрипт>».

Метод 2: Сохраните введенные пользователем данные и примените метод htmlspecialchars () при извлечении данных и отображении их на странице.

Причина моих сомнений в том, что я считаю, что при использовании метода 1 будут накладные расходы на базу данных, тогда как при использовании метода 2 данные необходимо преобразовывать снова и снова при запросе через php. Поэтому я не уверен, какой из них лучше.

Для получения дополнительной информации я использую htmlspecialchars ($ val, ENT_QUOTES, «UTF-8») , чтобы также преобразовать «и».

Пожалуйста, помогите мне развеять мои сомнения. Также предоставьте объяснение, если возможно.

Спасибо.

5
задан Wesley van Opdorp 1 March 2012 в 08:34
поделиться