Может ли веб-сайт знать, запускаю ли я скрипт пользователя? - PullRequest
14 голосов
/ 18 декабря 2011

Может ли, например, Facebook.com запустить скрипт контроля версий в моем браузере и узнать, выполняю ли я измененный HTML-код с использованием сценария?

Можно ли это сделать с помощью сценария,Можно ли прочитать HTML-код в кэше и создать какой-нибудь хэш-тег, который отправляется обратно на сервер и сравнивается с кодом, который был отправлен клиенту?

Ответы [ 2 ]

22 голосов
/ 18 декабря 2011

Да, теоретически сайт может определить наличие сценариев в различных ситуациях.

Это небезопасно и, как правило, создает слишком много проблем для незначительной "угрозы" сайту.(Опять же, некоторые веб-мастера могут быть навязчивыми параноиками по поводу таких вещей.;))

Некоторые методы, в зависимости от того, что делает сценарий (в произвольном порядке):

  1. Игровые или аукционные сайты могут отслеживать время (скорость и регулярность) кликов "ставки".

  2. Сайт может AJAX-подсчет, скажем, <script> узлов, просматривая

  3. Аналогичным образом, сайт может AJAX-возвратить любое или все содержимое страницы и сравнить это с ожидаемыми значениями.

  4. Дополнительные вызовы AJAX или вызовы AJAX, которые не соответствуют скрытым требованиям, могут быть отмечены (и могут отображаться как успешные).

  5. Если сценарий использует unsafeWindow как раз(неправильный) способ, страница может обнаружить это и даже взломать (слегка) повышенные привилегии .

  6. Могут быть обнаружены "клики", которым не предшествовали события наведения мыши,Я действительно видел, как это используется в дикой природе.

  7. Javascript страницы часто может обнаружить сгенерированные скриптом клики (и т. Д.) как отличающиеся от сгенерированных пользователем,(Спасибо, c69 , за напоминание.)

Однако, в конечном счете, преимущество заключается в использовании сценария usercript.Любые контрмеры, предпринимаемые веб-страницей, могут быть обнаружены и предотвращены на стороне пользователя.Даже пользовательские, необходимые плагины или аппаратные ключи могут быть подорваны опытными и мотивированными пользователями.

5 голосов
/ 24 декабря 2011

Обновление : описанные ниже методы полностью неэффективны с Greasemonkey 3.3 .



См. (Мертвая ссылка) Как обнаружить Greasemonkey .

Javascript для определения, установлен ли GM (но не работает ли на этой странице сценарий):

Устаревший вариант 1:

if (Components.interfaces.gmIGreasemonkeyService) {
  alert("I smell a monkey!");
}


Устаревший вариант 2:

<script type="text/javascript" src="resource://greasemonkey/addons4.js"></script>
<script type="text/javascript">
if (typeof GM_addonsStartup !== "undefined") {
  alert("I smell a monkey!");
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...