Может ли javascript имитировать нажатие кнопки?
Я проектирую сайт, где было бы проблематично, если бы макросам разрешалось свободно работать.
Я подумал о том, как остановить макрос, созданный имитацией HTTP-запросов нажатием кнопки, но это было бы напрасно, если бы они могли вставлять скрипты javascript, которые просто "click", и действовать как обычный пользователь.
Путем моделирования нажатия кнопки, я имею в виду, кнопка нажата, а кнопка "Форма" находится в запуске с ассоциированным с ним кодом php.
Логика говорит мне, что javascript может это сделать, но я хотел бы знать наверняка, спасибо за любой вклад!
~ Эндрю
Ответы
Ответ 1
Кнопка может быть нажата программно. Например, у вас может быть страница с формой вроде этого:
<form>
<input type="text" />
<button>Do something</button>
<input type="submit">
</form>
чем можно просто открыть debug cosole и тип
document.getElementsByTagName('button')[0].click();
который нажимает кнопку, или
document.getElementsByTagName('input')[1].click();
который нажмет кнопку отправки формы или просто
document.forms[0].submit();
чтобы отправить форму без нажатия кнопки.
Невозможно предотвратить использование пользователем кода JavaScript на клиенте. Вы должны добавить некоторую проверку на стороне сервера, чтобы предотвратить нежелательные действия пользователя.
Ответ 2
единственное, что вы можете сделать, это проверить запрос на сервере.
как только вы передадите страницу клиенту, у вас нет технического контроля над тем, как он может быть использован.
Что вы можете сделать, например, из:
Скажем, вы делаете javascript-игру. Вы используете AJAX для отправки оценки игрока в
сервер для ведения журнала. Посмотрев на script, злоумышленник может запустить ваш код AJAX
чтобы отправить счет 1 000 000, даже если они заработали всего 5000.
Вы не можете предотвратить это на стороне javascript. Тем не менее, необходимо каким-то образом аутентифицировать запросы AJAX на стороне сервера, вы можете передать "токен" безопасности на javascript, который хакер не смог получить.