Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.11.2010, 19:40
Новичок на форуме
Отправить личное сообщение для kostysh Посмотреть профиль Найти все сообщения от kostysh
 
Регистрация: 21.11.2010
Сообщений: 9

FileReader проблема с локальными файлами
Привет, при разработке приложения для Хрома, столкнулся с необходимостью чтения локальных файлов. По данному вопросу есть хороший мануал http://www.html5rocks.com/tutorials/file/dndfiles/

Используя инфу из этого мануала я написал себе плагин для jQuery, в черновом варианте пока (если кому интересно - вышлю). Казалось бы все просто, но неожиданно выплыла странная проблема. Если скрипт запускается с локального диска - то получить содержимое локальных файлов не получается (атрибуты файла читаются, но после вызова функции readAsBinaryString в evt.target.result - пустота). Если абсолютно тот же самый скрипт загрузить на хостинг, открыть страницу со скриптом с веба - то локальные файлы читаются.
Подозреваю, что это какая-то секюрная фича, но смысл ее мне не понятен. Кстати, те примеры из упомянутого выше мануала, которые касаются непосредственно чтения локальных файлов (побайтово или целиком) - имеют такие же проблемы.

Другие браузеры не пробовал, но они мне не нужны в принципе, поскольку разрабатывается конкретно приложение для Google Chrome. Сейчас у меня версия 7.0.517.44 (это стабильная ветка).
Ответить с цитированием
  #2 (permalink)  
Старый 21.11.2010, 21:10
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от kostysh
Подозреваю, что это какая-то секюрная фича, но смысл ее мне не понятен.
Гипотетическая ситуация: вам прислали .html файл, вы его запустили с локального диска и он послал злоумышленникам содержимое какого-нибудь важного файла.
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2010, 01:19
Новичок на форуме
Отправить личное сообщение для kostysh Посмотреть профиль Найти все сообщения от kostysh
 
Регистрация: 21.11.2010
Сообщений: 9

Сообщение от B@rmaley.e><e Посмотреть сообщение
Гипотетическая ситуация: вам прислали .html файл, вы его запустили с локального диска и он послал злоумышленникам содержимое какого-нибудь важного файла.
в данном случае так не получится. Дело в том, что объект FileReader работает исключительно со стандартными input (тип: file) элементами формы.
Что это означает? - это означает, что для того, чтобы злоумышленникам что-то отправилось, я должен сначала нажать на кнопку "просмотреть файлы", затем через диалог выбрать тот самый "какой-то важный файл"... только начиная с этого момента возможна автоматизация.

Так что, на самом деле, проблем с секьюрностью нет.
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2010, 16:38
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Кста .интересно. после выбора файла страница обновляеться? если да-то вот тебе и причина.была подобная проблема на локальном-файл (графический) грузился в контейнер-и был в нём ровно столько времени сколько висело аларм сообщение об успешности. а дальше закрытие аларма-обновление страницы и отсутствие картинки
Ответить с цитированием
  #5 (permalink)  
Старый 24.11.2010, 17:59
Новичок на форуме
Отправить личное сообщение для kostysh Посмотреть профиль Найти все сообщения от kostysh
 
Регистрация: 21.11.2010
Сообщений: 9

Сообщение от dmitriymar Посмотреть сообщение
Кста .интересно. после выбора файла страница обновляеться? если да-то вот тебе и причина.была подобная проблема на локальном-файл (графический) грузился в контейнер-и был в нём ровно столько времени сколько висело аларм сообщение об успешности. а дальше закрытие аларма-обновление страницы и отсутствие картинки
не, страница не обновляется. Эта проблема, как оказалось, является известной (я нашел запись в багтрекере хрома).. но, по сути, я эту проблему для себя решил. Дело в том, что описанный выше функционал нужен мне для приложения хрома. Это приложение пакетированное, то есть у него есть часть кода, которая загружается к клиенту и постоянно у него находится. С сервером я общаюсь только через аякс.

Так вот, если открыть локально НЕ-инсталлированное приложение, для Хрома, просто как файл - то код чтения локальных файлов не работает, все как я описывал выше. НО, если инсталировать хром-приложение и, соответственно, открыть страницу с кодом уже как приложение - то все отлично работает. Локальные файлы читаются.

Если интересно, могу показать пример, где файлы читаются с локального диска, затем сохраняются в локальный же Web SQL Storage, и затем по запросу оттуда читаются и выводятся в слой (в текстовом виде).

Кстати, с последним тоже связана сложность - если попытаться вывести в слой не текст, а html-строку, которая содержит ссылки на локальные файлы (а у меня в XML-ях такого полно), то ничего не получится - скрипт выдаст ошибку: "Not allowed to load local resource". Совершенно необъяснимо зачем нужна такая секьюрная штука, поскольку, если мне нужно - ее элементарно обойти. Если мне нужно вывести в страницу ссылки на локальные файлы, которые содержатся в тексте - я просто могу парсером завернуть их джаваскрипт функции.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47