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

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

Способ 1: Сохраните введенные пользователем значения после примененияhtmlspecialchars() функция. Используя это, пользовательский ввод"<script>" станет "& lt; script & gt;" ,

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

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

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

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

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос