Подавать воспроизводимый, но не загружаемый аудиофайл с ASP MVC - PullRequest
0 голосов
/ 25 января 2019

Сценарий таков:

Нам необходимо предоставить некоторым пользователям веб-приложения возможность прослушивания некоторых разговоров, записанных в формате mp3. Но поскольку эти разговоры являются частными, мы хотим передавать их безопасным способом (я понимаю, что это делается автоматически, если мы используем SSL), и мы не хотим, чтобы они могли их загружать.

Можно ли как-нибудь передать клиенту аудиофайл, чтобы его можно было прослушать, но не удалось его скачать?

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

Я использую ASP MVC в качестве сервера, хотя я думаю, что это скорее вопрос безопасности, чем то, что связано с конкретной технологией. Я попытался вернуть аудиофайл из контроллера, но Chrome дает пользователю возможность загрузить файл.

public ActionResult Stream(string mp3)
{
    byte[] file = System.IO.File.ReadAllBytes("someVeryPrivateAudioFile.mp3");
    return File(file, "audio/mpeg");
}

Можем ли мы воспроизвести его или передать каким-либо образом, чтобы пользователь мог слушать его, но не загружать? Это вообще возможно?

РЕДАКТИРОВАТЬ 1

Хорошо, теперь я создал простой вид со следующим тегом:

<audio controls="" controlsList="nodownload" autoplay="" name="media"><source src="https://MyServer/MyController/Stream" type="audio/mpeg"></audio>

Я попытался обработать огромный (около одного гигабайта) mp3-файл, и звук воспроизводится сразу (так что я думаю, что он буферизуется), и я не могу загрузить его. Пока все хорошо.

Опять же, я знаю, что это небезопасно и что для кого-то было бы тривиально обойти это и загрузить файл в любом случае, но это только начало.

Теперь я хотел бы дать пользователю возможность перемотать звук вперед. Я проверил другие вопросы на SO, такие как Как транслировать MP3 из действия контроллера ASP.NET MVC , но я не могу найти способ справиться с этим.

Есть идеи?

1 Ответ

0 голосов
/ 29 января 2019

Все, что вы сервер для пользователя, можно загрузить. Использование SSL ничего не меняет, просто помогает, что какой-то «человек посередине» между вашим сервером и пользователем не может прослушивать данные. Браузер пользователя будет интерпретировать веб-контент одинаково с SSL или без него.

Даже если он представлен в виде аудиопотока, некоторые плагины для браузера могут загружать его очень быстро (например, загрузчик видео с YouTube).

Единственный способ, с помощью которого я вижу, как вы можете усложнить загрузку аудио, - это то, что вы создаете свои собственные аудио блоки и воспроизводите первый блок. Затем создайте свой собственный js, который подготовит следующий фрагмент и начнет воспроизводить его после первого конца. Затем треть, четверть и т. Д. Вы можете легко создать его, чтобы он работал плавно, но вы теряете возможности навигации по звуковым меткам времени.

Вы тоже можете решить эту проблему, но это также требует некоторого умного кода. От заново изобретая колесо веб-потока:)

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