Важно разделить валидацию и дезинфекцию.
При проверке проверяется, что пользователь ввел правильный тип или формат данных. Например, в веб-форме кто-то может взломать ответ выбранного входа, чтобы отправить значение, которое не отображается в предоставленном вами выборе. Проверка может перехватить эту ошибку и предоставить пользователю соответствующее сообщение об ошибке. Пользователь также может ввести строку в поле, которое ожидает числовое значение. Если вы не проверите это перед попыткой запроса, запрос может завершиться неудачей, и будет сложнее определить причину и предоставить пользователю сообщение об ошибке, либо запрос может завершиться молча с неверными данными.
Обеззараживание гарантирует, что данные не причинят вреда при добавлении в базу данных (или последующем отображении на веб-сайте, вызывая атаку XSS или тому подобное). Запрос INSERT INTO people (names) VALUES('$name')
завершится неудачей, если $name = "O'Reilly"
, но подготовленный оператор автоматически пропустит одинарную кавычку при привязке строки в качестве параметра. При использовании разных наборов символов это особенно важно, поскольку может быть больше, чем просто символы кавычек и косой черты, которые могут вызвать проблемы, возможно, разрешая атаку SQL-инъекцией.
Чтобы убедиться, что пользователь действительно вводит адрес электронной почты, вам необходимо сохранить проверочный код, поскольку PostgreSQL не знает, что введенные данные должны быть адресом электронной почты, и будет хранить любую строку, которую вы предоставляете это.