Уязвимость в валидации формы
Всем привет недавно занялась программированием, вот сейчас делаю пет проект и там регистрация, я сделала валидацию формы, но она уязвима в том, плане, что её можно обойти через просмотр кода страницы в браузере путем изменения дата атрибута Код на javaScript
function validate(RegularExpressions, input, borderCssClass, ValidMessage) {
input.dataset.valid = 'false';
input.addEventListener('blur', () => {
const inputValue = input.value;
if (RegularExpressions.test(inputValue)) {
input.classList.remove(borderCssClass);
input.previousElementSibling.classList.remove(ValidMessage);
input.dataset.valid = 'true';
} else {
input.classList.add(borderCssClass);
input.previousElementSibling.classList.add(ValidMessage);
input.dataset.valid = 'false';
}
});
}
function senfForm() {
form.addEventListener('submit', (e) => {
e.preventDefault();
if (inputName.dataset.valid === 'false' || inputEmail.dataset.valid === 'false' || inputPassword.dataset.valid === 'false') {
return;
}
var formData = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open('POST', '../bd.php'); // Укажите здесь путь к обработчику формы на сервере
xhr.onload = function() {
if (xhr.status === 200) {
// Если форма отправлена успешно, выводим сообщение об успехе
alert('succses');
form.reset(); // Очищаем поля формы
} else {
// Если произошла ошибка при отправке формы, выводим сообщение об ошибке
alert('error');
}
};
xhr.send(formData);
});
}
В общем функция валидации при успешном прохождении валидации добавляет дата атрибут к инпуту, А функция обработки формы проверяет дата-атрибут у инпута и если все инпуты имеют дата атрибут = true, то отправляет данные в базу данных, В общем можно изменить дата атрибут в просмотре кода элементов тем самым обойдя валидацию. Как исправить эту уязвимость?
Источник: Stack Overflow на русском