Могу ли я быть уверен, что "обязательные" входные элементы имеют отправленные значения?
Могу ли я доверять требуемому атрибуту для моих полей в форме?
<input type="text" name="username" required/>
Приведенный выше код гарантирует, что это обязательное поле, но не может ли пользователь просто проверить элемент и удалить атрибут? Необходимо ли мне проверять if (isset($_POST...
или я могу полагаться на требуемый атрибут, чтобы сделать это?
4 answers
Всегда используйте проверку на стороне сервера. Требуемый атрибут существует на переднем конце, и им можно легко манипулировать, если злоумышленник захочет изменить DOM.
Требуемое свойство добавлено в html5, работает с большинством браузеров, проблема, как всегда, в том, что ie не работает, и поэтому другие старые браузеры не будут доверять этому атрибуту.
Проверка всегда должна выполняться на стороне сервера. Есть такие вещи, как interception proxy
, которые могут обойти даже проверку Javascript. Таким образом, вы даже не можете использовать Javascript для целей проверки. Вы можете использовать их для информирования пользователей о том, что эти поля обязательны, но полагаться на них - плохая практика.
Проверка на стороне сервера - ваш лучший выбор. В настоящее время Safari на настольных компьютерах и iOS, а также в браузерах Android не поддерживают атрибут "требуется" любого типа ввода в качестве средства проверки отправки (хотя, как ни странно, поддерживается селектор css псевдокласса).
Ссылка: http://www.wufoo.com/html5/attributes/09-required.html