Допустим, я разрабатываю кучу 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 работает на стороне сервера, если это имеет значение.