Подтвердить что ты не робот

Потеря данных в JavaScript

При чтении о navigator() объект в JavaScript Я запускаю taintEnabled(), как и аналогичные функции taint() и untaint(), ссылаясь на то, что называется "data-tainting".

Googling вокруг net и StackOverflow показывают некоторую возможную ссылку на язык Perl, но не о JavaScript. Интересно, что такое data-taining и как использовать эти функции?

4b9b3361

Ответ 1

Tainting данных (или Taint Checking) - это языковая функция, в которой пользовательские данные помечены как tainted, флаг, который распространяется на все данные, полученные из этого ввода. В результате код может реализовать утверждения времени выполнения, чтобы гарантировать, что критический код безопасности не вызывается с использованием испорченных данных (т.е. Предотвращает атаки типа SQLi, XSS).

В то время как Netscape реализовал его в браузере в версиях v3 и v4, поддержка его, к сожалению, никогда не материализовалась в другом месте, поэтому @trejder абсолютно прав, которого следует избегать в JavaScript.

Ответ 2

Как уже упоминалось, в Интернете не так много источников информации о заражении данными, поскольку это, кажется, давно забытая, устаревшая техника и тема. Но я узнал об этом интересном чтении на findmeat.org. Для метода Navigator.taintEnabled() он говорит, что (некоторые цитированные части, некоторые тексты сокращены):

Поддержка обработки данных была короткоживущим средством отправки данных обратно на сервер. Последствия для безопасности стали неработоспособными, и вся идея, связанная с данными, была устаревшей. Функциональность была удалена в версии 1.2 JavaScript. Этот метод поддерживается только для предотвращения сбоев сценариев. Эта функциональность сильно устарела, и вы можете ожидать, что она вызовет исключения во время выполнения в будущем. Вы должны попытаться удалить его, чтобы предотвратить ошибки времени выполнения в будущем.

Кажется, что в настоящее время несколько браузеров поддерживают эту функцию (и аналогичную, упомянутую) и что ее нельзя использовать ни при каких обстоятельствах. Даже если браузер реализует это вообще, он должен всегда возвращать значение false для этого метода.

Ответ 3

Отсутствие информации об этой концепции заставляет новых учеников приложить больше усилий. Вот моя находка, чтобы помочь им.

Когда tainting должен быть включен, а когда нет, рассмотрим два важных момента:

  • Когда функция очистки данных включена, JavaScript в одном окне может видеть свойства другого окна, независимо от того, на каком сервере был загружен документ другого окна. Однако автор других значений свойств taints (mark) или других данных, которые должны быть безопасными или приватными, и JavaScript не могут передавать эти испорченные значения на любой сервер без разрешения пользователя.
  • Когда функция очистки данных отключена, script не может получить доступ к каким-либо свойствам окна на другом сервере.

Полезный ресурс http://www.aisystech.com/resources/advtopic.htm#1009533