Обнаружение подделки файлов JavaScript - PullRequest
1 голос
/ 08 августа 2011

Допустим, я разрабатываю кучу JS-виджетов, которые предназначены для встраивания в любую веб-страницу (вроде iGoogle, виджеты Pageflakes).

Клиент может встроить виджеты, добавив тег script:

<div id="widgetHost">
    <script src="http://fantasticwidgets.net/awesomeWidget.js"></script>
    <script src="http://fantasticwidgets.net/awesomeWidgetAgain.js"></script>
</div>

Теперь эти виджеты опираются на общие библиотеки (например, jQuery, подчеркивание и некоторые из моих - например, myCommon.js).

В идеале, это то, что должно произойти:

  • Загрузчик виджета js загружается первым
  • Загрузчик виджета js проверяет наличие этих файлов библиотеки с их требуемой версией (скажем, загружен ли на странице jQuery v1.6.2 или нет, myCommon v1.1 и т. Д.)
  • Если какой-либо из них загружен, не запрашивайте эти файлы, а загружайте только отсутствующие сценарии.
  • Эти сценарии затем вызывают некоторую веб-службу, делают магию и визуализируют HTML на странице

Обеспокоенность : Проверка уже загруженных файлов приводит к уязвимости подмены скриптов. Злонамеренный пользователь подделывает библиотеки после загрузки, которые он использует для кражи конфиденциальной информации или выполнения других плохих действий.

Решение : Не проверять загруженные библиотеки, всегда отправлять их все снова. Это еще не пуленепробиваемый, но, по крайней мере, делает его немного сложнее, так как он должен снова подделать. Однако это приводит к потере пропускной способности и увеличению времени загрузки.

Вопрос : Можно ли определить, были ли подделаны загруженные файлы, предпочтительно на стороне клиента? Или это должно включать решение на стороне сервера? У меня ASP.Net работает на стороне сервера, если это имеет значение.

1 Ответ

2 голосов
/ 09 августа 2011

Единственное реальное решение здесь - «использовать HTTPS для доставки сценариев».Если злоумышленник может отравить кэш браузера пользователя содержимым HTTPS из другого домена, игра для вас уже окончена, поскольку он также сможет изменить страницу, которую вы предоставляете пользователю.

...