Recientemente hemos tenido que saltarnos un poco la seguridad por defecto de los navegadores para un proyecto de varios gigabytes, y aunque no se debería acudir a ello a continuación describiremos cómo permitir que Chrome y Firefox actúen de forma similar a Internet Explorer en cuanto a acceder a recursos locales.
Para una aplicación dentro la intranet de un cliente se requería reproducir vídeos de gran tamaño, algunos de ellos superando el gigabyte. Lo que intentamos primero fue servirlos igual que otros elementos de menor tamaño que estaban alojados en un NAS (Network-attached storage), como imágenes, pdfs,…
Inicialmente la aplicación abría el fichero, lo leía y escribía por un buffer de salida que era accedido mediante una URL. Con esto todo funcionaba correctamente pero el rendimiento tendía a cero para grandes tamaños: el servidor se saturaba y el cliente no recibía los datos hasta transcurridos un largo tiempo de espera.
Una posible solución era reducir los tamaños de los ficheros a servir, la otra acceder a los ficheros localmente (file://). Esta última solo es posible por defecto mediante el navegador Internet Explorer, a continuación se describe como forzar a otros navegadores a saltarse sus restricciones.
Chrome
Para desactivar la seguridad es necesario lanzar Chrome con el siguiente parámetro (flag *): –disable-web-security
A continuación se describen los pasos para Windows:
- Localizar el acceso directo al navegador (icono)
- Botón derecho -> Propiedades -> Destino
- Editar el destino añadiendo el parámetro al final. ej: “C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” –disable-web-security
- Aceptar el cambio y lanzar Chrome
También se puede lanzar Chrome mediante consola (situándose en la carpeta de chrome.exe) y ejecutando: chrome.exe –disable-web-security
El punto controvertido de este cambio es que todas las páginas que se vean mediante el Chrome lanzado con este parámetro pueden incurrir en problemas de seguridad, así recomendamos tener dos accesos directos o usar esta configuración solamente en desarrollo.
(*) En algunos casos se puede conseguir el acceso a ficheros locales con el flag –allow-file-access o –allow-file-access-from-files que son menos peligrosos para la seguridad.Icon
Lista completa de flags en Chrome: http://peter.sh/experiments/chromium-command-line-switches/
Firefox
Para desactivar la seguridad es necesario editar las preferencias de usuario de Firefox.
A continuación se describen los pasos para Windows NT/Vista/7/8:
- * Localizar el directorio del perfil de Firefox: C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[SOME STRING].default\
- Crear un fichero de nombre user.js
- Añadir las líneas:
user_pref("capability.policy.policynames", "localfilelinks");
user_pref("capability.policy.localfilelinks.sites","http://localhost:8080");
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
- Editar la línea user_pref(“capability.policy.localfilelinks.sites”,”http://localhost:8080″); cambiando la url por el sitio que queremos permitir el acceso a ficheros locales.
- Guardar el fichero
- Se puede añadir más de un sitio separándolos con espacios
(*) Si no se encuentra AppData en el punto 1 se puede ejecutar %APPDATA% desde el botón de Inicio de Windows y se debería abrir la carpeta correspondiente.
La configuración en Firefox permite que solamente algunos sitios tengan acceso a ficheros locales y por lo tanto las vulnerabilidades se pueden prácticamente descartar si únicamente se permite un sitio privado, por ejemplo una intranet de empresa.Icon
Fuente: http://wiki.mobrulestudios.com/index.php?title=Enable_Firefox_to_Access_Local_Data