Хэширование файлов на стороне сервера и на стороне клиента - PullRequest
0 голосов
/ 19 апреля 2011

Я собираюсь написать небольшой webapp / tool / widget, который должен хранить некоторые файлы на сервере. Чтобы избежать ненужной нагрузки на стороне сервера, я хочу создать хеши файлов (с SHA, MD5 или чем-то еще ...) на стороне клиента. Это возможно с HTML5 FileAPI, но тогда пользователи Opera и IE9 будут уволены. Апплеты JAVA или Flash могут использоваться вместо подхода HTML5, чтобы обеспечить совместимость приложений с различными браузерами. Но поскольку я не знаком с JAVA / Flash (и я бы использовал их только в жизненных или смертельных ситуациях), я бы хотел придерживаться JS, если это возможно. Но все предложения на стороне клиента приветствуются ... JS, JAVA, Flash, что угодно ...

Традиционный метод POST (с PHP) сделает свое дело независимо от агента пользователя. И AFAIK это безопаснее.

Короче говоря, мой вопрос: почему я предпочитаю использовать хеширование на стороне клиента?

Можете ли вы представить некоторые плюсы и минусы обоих подходов?

Ответы [ 3 ]

2 голосов
/ 19 апреля 2011

Я пытался написать несколько плюсов о том, как делать это на стороне клиента, но, по моему честному мнению, вы просто будете делать это сами. И как вы убедитесь, что отправленный хеш был сгенерирован вами? Любой может легко использовать такие инструменты, как Firebug и изменить работающий код (поправьте меня, если я ошибаюсь, никогда не использовал его: D). Более того, они могут создавать / подделывать свои собственные запросы и публиковать их в вашем PHP-файле, так что вы потеряете много контроля.

Так как же тогда вы будете проверять данные? Создать еще один хеш и сравнить их друг с другом? Но тогда вы уже делаете это на стороне сервера!

Так что лучше подумайте о сохранении операций хеширования на стороне сервера, где вы контролируете среду. И алгоритмы хеширования существуют уже много лет, поэтому я уверен, что они оптимизировали его довольно много. И вы обеспечите большую совместимость для ваших клиентов.

И если вы получаете достаточно трафика, что хеширование является основным ударом по производительности, то, возможно, пришло время перейти на что-то большее ...

Но не поймите меня неправильно, это очень возможно и имеет смысл - http://www.movable -type.co.uk / scripts / sha1.html - но я просто не могу заставить себя доверять это решение.

2 голосов
/ 19 апреля 2011

Серверная часть Больше нагрузки, но не так много.Напишите код, рассчитайте время, измерьте использование памяти и т. Д. Я сомневаюсь, что это будет серьезной проблемой, особенно если вы можете сделать это с помощью задания cron, чтобы распределить нагрузку, если она огромна.сторона Вы не можете доверять хешам, и для их проверки требуется пересчитать их на сервере.Меньшая нагрузка на сервер, но если для хэширования большого файла потребуется некоторое время, это будет раздражать пользователя.

Я бы сделал это на стороне сервера, если у вас нет тысяч огромных файлов каждую минуту!

0 голосов
/ 19 апреля 2011

что если JavaScript отключен? Вам не нужно полагаться на JavaScript, чтобы выполнять свою работу, если вы делаете это на стороне сервера. Лучше использовать дополнительный ресурс сервера для 100% гарантии того, что он будет работать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...