Манипулиране на файлове от страна на клиента (javascript/jQuery) преди/след качване/изтегляне

Просто проучвам нещата за това, след като се огледах известно време и направих празно. Бих искал да видя дали това изобщо е възможно, тъй като досега не виждам начин да го направя.

Искам да шифровам файл локално (в браузъра, използвайки съществуващи библиотеки), преди да го кача. Тогава ще трябва да го извлека и дешифрирам, преди да представя файла на потребителя. По-конкретно, не мога да изпратя файла на сървъра за криптиране преди съхранение. Криптирането/декриптирането трябва да се извърши от страна на клиента.

Ето груба схема на това, което трябва да направя:

  1. Представете на потребителя притурка за намиране на файл.
  2. Прочетете файла в скрипт от страна на клиента (т.е. заредете го локално)
  3. Шифровайте го на клиента.
  4. Качете криптирана версия, прочистете клиентската страна и запазете данните.

И обратното:

  1. Изтеглете съхранената, криптирана версия на файла.
  2. Декриптирайте го на клиента.
  3. Представете дешифрирания файл обратно на потребителя като изтегляне.

Търсих някакъв вид MIME кодиране на клиента (подобно на начина, по който прикачените файлове към имейл се кодират MIME, преди да бъдат изпратени като обикновен текст). Особено се интересувам от метод jQuery, тъй като това е, което използва останалата част от приложението ми, но обикновеният стар javascript би бил добре.

Всички мисли или насоки бяха получени с голяма благодарност. Това е този, който обмислям по празниците. Така че, благодаря предварително за всякакви коментари.


person Mark    schedule 17.12.2009    source източник
comment
Ще има ли проблем със сигурността, дори ако можете да направите това, дори ако можете да направите това? Всеки, от когото искате да защитите съдържанието на файла, също може да ви прочете източника на вашия JS, нали?   -  person tony-p-lee    schedule 17.12.2009


Отговори (4)


Няма начин да направите това с помощта на обикновен Javascript или JQuery поради ограниченията за сигурност в браузъра.

Най-добрият ви залог вероятно е да вземете компонент за качване, базиран на Flash с отворен код, като SWFUpload (Flash може много повече или клиентът страна) и добавяне на процедурите за криптиране там в ActionScript. Създаването на Java аплет или ActiveX контрола също са валидни опции.

В зависимост от това за какъв тип криптиране говорим, може да има и готови компоненти за работата.

person Pekka    schedule 17.12.2009
comment
Започвах да мисля така. Благодаря. Нямам проблеми с гледането на Flash, така че ще проуча това. Благодаря Пека. - person Mark; 17.12.2009

Не можете да направите това с JavaScript. Можете, разбира се, просто да използвате SSL (напр. чрез HTTPS). Много лесен, добре тестван, всичко това. В противен случай ще трябва да използвате нещо нестандартно като Flash, Java или ActiveX.

person T.J. Crowder    schedule 17.12.2009

Приетият отговор е остарял тук. Възможно е да направите това сега с помощта на HTML5 File API и нещо като CryptoJS библиотека.

person Valeriu Paloş    schedule 04.06.2015

Не мога да говоря с други браузъри, но знам това трябва да е възможно във Firefox чрез използване на api за манипулиране на файлове за качване/изтегляне на файлове от потребителя към кода от страна на клиента (където могат да бъдат манипулирани) и стандартен ajax за качване/изтегляне на файлове от кода от страна на клиента към сървъра.

person rampion    schedule 27.08.2011