Могу ли я быть уверен, что "обязательные" входные элементы имеют отправленные значения?


Могу ли я доверять требуемому атрибуту для моих полей в форме?

<input type="text" name="username" required/>

Приведенный выше код гарантирует, что это обязательное поле, но не может ли пользователь просто проверить элемент и удалить атрибут? Необходимо ли мне проверять if (isset($_POST... или я могу полагаться на требуемый атрибут, чтобы сделать это?

Author: user2864740, 2014-08-29

4 answers

Всегда используйте проверку на стороне сервера. Требуемый атрибут существует на переднем конце, и им можно легко манипулировать, если злоумышленник захочет изменить DOM.

 5
Author: Anth Bieb, 2014-08-29 00:23:47

Требуемое свойство добавлено в html5, работает с большинством браузеров, проблема, как всегда, в том, что ie не работает, и поэтому другие старые браузеры не будут доверять этому атрибуту.

 1
Author: 0rochimaru, 2014-08-29 00:24:49

Проверка всегда должна выполняться на стороне сервера. Есть такие вещи, как interception proxy, которые могут обойти даже проверку Javascript. Таким образом, вы даже не можете использовать Javascript для целей проверки. Вы можете использовать их для информирования пользователей о том, что эти поля обязательны, но полагаться на них - плохая практика.

 1
Author: Alley Shairu, 2014-08-29 00:27:28

Проверка на стороне сервера - ваш лучший выбор. В настоящее время Safari на настольных компьютерах и iOS, а также в браузерах Android не поддерживают атрибут "требуется" любого типа ввода в качестве средства проверки отправки (хотя, как ни странно, поддерживается селектор css псевдокласса).

Ссылка: http://www.wufoo.com/html5/attributes/09-required.html

 0
Author: Dajofo, 2014-08-29 01:03:07