Вот как мне нравится решать эту проблему.
Этот метод работает путем создания заявки на загрузку контента через один http-запрос ... Еще одна попытка использовать тот же билет для загрузки контента не удастся, поэтому любые расширения, которые пытаются загрузить контент снова или пользователь пытается вручную в противном случае, следовательно, флэш-плеер будет единственным способом загрузки контента. Однако у этого подхода есть один недостаток: пользователи не смогут пропустить часть видео, которая не была загружена ... в некоторых стандартных реализациях плеера, которые могут даже остановить загрузку видео. Любые идеи по этому вопросу будут высоко оценены.
Я начинаю с написания PHP-скрипта, который принимает video_id, file_name или локальный путь к вашему видеофайлу (в зависимости от инфраструктуры хранения вашей видео коллекции) в GET-запросе вместе с уникальным значением хеша (сложным угадать и придумать, вероятно, сгенерированный с секретным ключом, так что он может быть проверен на поступление от нашего приемника (флэш-плеер), если хакер отправит нам использованный хеш или недействительный хеш (не удовлетворяет наш ключ), мы будем не отправлять ему файл). Затем скрипт PHP открывает видеофайл и отправляет его содержимое с правильным типом mime видео. для FLV тип пантомимы - видео / x-flv. Он гарантирует, что когда-то уникальный хэш не использовался ранее и был сгенерирован из вашего секретного ключа шифрования.
Затем, после загрузки страницы с помощью флеш-плеера, мы можем предоставить файл .php с правильными параметрами get в качестве URL-адреса видео для видеоплеера. (Если это prude-плеер, который разрешает только flv-файлы, вы всегда можете запрограммировать ваш файл .htaccess для анализа файлов .flv как php-скрипта только в определенной папке и переименовать ваш .php-файл в .flv и попытать счастья) .. .anyways ... также сгенерируйте хеш-ключ ... возможно, вы можете взять текущее время сервера и добавить его к солт-значению, такому как другой ключ, известный обоим сценариям, и зашифровать эту окончательную конкатенацию с вашим секретным ключом.
Таким образом, как только php-скрипт видеошлюза получит имя файла или хеш-ключ ... он расшифрует хеш-ключ и выяснит, действительно ли он сгенерирован из сестринского скрипта, и убедитесь, что видео не отправлено снова тот же хэш-ключ ...
Для дополнительной безопасности вы можете каждый день сбрасывать секретный ключ, используя механизм cronjob или bootstrap. Чтобы предотвратить дублирование использования хеш-ключей, вы можете хранить их в базе данных mysql, файловых операциях или NOSQL (в зависимости от ваших потребностей и инфраструктуры).
Убедитесь, что файл запрашивается тем же пользовательским агентом, для которого был создан хеш-ключ. В случае, если хакер попытается свернуть или Wget ваши видео неиспользуемый URL, прежде чем флэш-плеер получает возможность использовать хеш-ключ. В этом случае хакер должен будет подражать пользовательскому агенту браузера или загрузить файл, используя инструмент командной строки ... Однако, обратите внимание, что это не ваш средний чемпион.