Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Небольшое дополнение к безопасности приложения (теория) (https://javascript.ru/forum/misc/73425-nebolshoe-dopolnenie-k-bezopasnosti-prilozheniya-teoriya.html)

Роман Андреевич 15.04.2018 06:01

Небольшое дополнение к безопасности приложения (теория)
 
Коллеги, доброго времени суток. Вопрос чисто теоретический.

Существует несколько способов защиты приложения от иньекций, csrf, xss и так далее. И по сути 100% защиты не один не гарантирует. Покуда есть вопрос как определить реального пользователя от бота, а потом бота поисковиков от редисок)))).

От сюда вопрос, может кто задумывался, если в дополнение к события например клик (отправка формы и тыц на кнопку для чего либо) проверять focus, mouseover, потому что что бы нажать на button необходимо навести курсор мыши (если она есть), или как вариант при загрузке страницы сразу проверить mousemove и отправить на сервер какую-нибудь метку, типа пользователь реальный.

для touch событий наверное аналогичное решение.

Возможна генерация событий.

типа if (!event) return 'До свидания'; или как то еще

Буду рад любым комментариям по делу. Может кто-нибудь озадачивался вопросом. Заранее благодарю.

рони 15.04.2018 09:17

Роман Андреевич,
Цитата:

Как отличить реальное нажатие от скриптового?
event.isTrusted

Роман Андреевич 15.04.2018 14:40

рони,
Это понятно, но istrusted не все браузеры поддерживают и мысль такая что если нужно нажать на кнопку на неё нужно сначала курсор навести и так далее, так сказать универсальное решение пусть костыль даже но тем не менее, хоть немного определить реального человека от бота

Роман Андреевич 15.04.2018 17:30

И ещё один вопрос, видят ли боты код сгенерированный JavaScript ом?????
Или они только читают исходный код страницы?????

j0hnik 15.04.2018 23:09

Роман Андреевич,
бот может не только событие клик совершать но и mouseover.
что за приложение пишите?

Роман Андреевич 16.04.2018 04:46

j0hnik,
Пишу приложение для управления торговым процессом компании, там же и управление интернет магазином, встал вопрос как отделить реального пользователя от бота. Хотя бы как то косвенно.

Основная идея, как и писал выше была, но действительно бот может подделать все что угодно, включая user agent и так далее.

Остается видимо один вариант, садить админа и отслеживать подозрительную активность. Дальше все что приходит чистить, удалять теги и вредоносные выражения, а после если что остается отправлять на сервер. Сессию делать минут на 30 - 20 простоя. И проверять на регулярные выражения какие-то входные данные

По сути даже и токены не помогают, если страницу просканировать, например file_get_contents() - самое простое что пришло в голову, то вытащим все токены и так же отправим их на сервер, а сервер их примет и скажет что все ок.

Роман Андреевич 16.04.2018 04:52

Остается вопрос, видит ли бот, код сгенерированный JavaScript'ом????? Т.е. если я вывожу статичный контент, а кнопки для отправки данных каких то, генерирую скриптом. По сути если посмотреть исходный код, страницы там кнопочек то не видно, только в отладчике.

Роман Андреевич 16.04.2018 04:55

По сути, с какой-то стороны если посмотреть))))) Выполнение сценариев JS это программа, единственное код можно подсмотреть, если не сжатый он. И от сюда, контент то получается динамический при каких то условиях. А бот не может провести регистрацию или авторизацию, потому что нужно сделать ряд действий.

j0hnik 16.04.2018 04:59

Видит, будет запускаться по загрузке документа или всех ресурсов.

j0hnik 16.04.2018 05:00

Цитата:

Сообщение от Роман Андреевич
код можно подсмотреть, если не сжатый он

еще одно заблуждение

Роман Андреевич 16.04.2018 05:03

j0hnik,
А как тогда сделать, что бы выполнялся сценарий, только из моих файлов, а сторонний никак???? Никак помойму

j0hnik 16.04.2018 05:06

чем вам может бот навредить?

Роман Андреевич 16.04.2018 05:35

j0hnik,
инъекции, подделка запросов и так далее. Вопрос не про ботов наверное даже, а в принципе про безопасность

j0hnik 16.04.2018 05:39

Роман Андреевич,
да, это не про них, и вообще безопасностью заниматься должен не клиент

Роман Андреевич 16.04.2018 05:42

j0hnik,
просто был вопрос, как отделить выполнение сторонних сценариев на клиенте, от своих. Видимо никак

j0hnik 16.04.2018 05:43

Цитата:

Сообщение от Роман Андреевич
Видимо никак

разве что от дурака

laimas 16.04.2018 06:30

Цитата:

Сообщение от Роман Андреевич
если страницу просканировать, например file_get_contents()

Это каким образом такое можно сделать на клиенте?

laimas 16.04.2018 06:33

Цитата:

Сообщение от Роман Андреевич
А бот не может провести регистрацию или авторизацию, потому что нужно сделать ряд действий.

Примеров регистрации ботов хоть отбавляй.
.

destus 16.04.2018 08:23

Роман Андреевич,
Цитата:

А как тогда сделать, что бы выполнялся сценарий, только из моих файлов, а сторонний никак???? Никак помойму
CSP

Dilettante_Pro 16.04.2018 10:15

Роман Андреевич,
Посмотрите эту тему
Удастся кликнуть?


Часовой пояс GMT +3, время: 11:12.