如何使 WISA 表现得像 LAMP(保护 IIS 上的 .mp3)

发布于 2024-07-05 07:12:08 字数 858 浏览 10 评论 0原文

我创建了一些小型 Flash 小部件,用于从 Apache/php 主机传输 .mp3 音频。 mp3 文件无法直接访问,并且不会将其自身保存到浏览器缓存中。

为此,我将主机上的 mp3 文件权限设置为“所有者:读/写”(数值 600)。 这使得只有我的 .php 文件可以读取 .mp3。

然后,我从 ActionScript 向 php 文件发出请求,并将 mp3 流式传输到我的小部件。 (如果客户端/用户在浏览器缓存中查找未找到所需的 mp3 文件)

这是流式传输文件的 php 代码:

<?php 
ob_start();
header("Expires: Mon, 20 Dec 1977 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: audio/mpeg");
@readfile($_GET["file"]);
ob_end_flush();
?> 

有谁知道如何使用 IIS/ASP.Net 重现此行为

 1.) Make it so a file is only accessible to a file on the server.
 2.) Stream that file using an .ASPX or .ASHX?

I have created a few small flash widgets that stream .mp3 audio from an Apache/php host. The mp3 file cannot be directly accessed and does not save it self to the browsers cache.

To do this I set the mp3 file permission on the host to "owner: read/write" (numeric value 600). This makes it so that only my .php file can read the .mp3.

Then I make a request to my php file from my ActionScript and it streams the mp3 to my widget. (If the client/user looks in the browsers cache the mp3 file is not found as desired)

This is the php code that streams the file:

<?php 
ob_start();
header("Expires: Mon, 20 Dec 1977 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: audio/mpeg");
@readfile($_GET["file"]);
ob_end_flush();
?> 

Does anyone know how to reproduce this behavior using IIS/ASP.Net

 1.) Make it so a file is only accessible to a file on the server.
 2.) Stream that file using an .ASPX or .ASHX?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

看轻我的陪伴 2024-07-12 07:12:08

您并没有真正保护 MP3,只是混淆了它们。 任何人仍然可以保存它们,特别是如果他们只是启动像 Fiddler 这样的 HTTP 调试器来找出正在进行的 HTTP 调用。 事实上,您将它们设置为不缓存并通过 PHP 脚本并没有多大帮助。

要使用 ASP.NET 获得相同的效果,您需要编写一个 HTTPHandler(可能就在 .ashx 上),并使用 以相同的方式设置所有标头>context.Response.Headers,然后使用 System.IO.FileStream 加载 .mp3 文件并将其发送到 context.Response.OutputStream< /代码>。 在 MSDN 上查找 System.Web.HTTPHandlerSystem.IO.FileStreamSystem.Web.HTTPResponse 了解更多信息。

You're not really protecting the MP3s, just obfuscating them. Anyone can still save them, especially if they just fire up an HTTP debugger like Fiddler to figure out what HTTP calls are being made. The fact that you've set them to not cache and to go through a PHP script doesn't help much.

To get this same effect using ASP.NET, you'd write an HTTPHandler (probably just off an .ashx), set up all the headers the same way using context.Response.Headers, then load the .mp3 file using System.IO.FileStream and send that to context.Response.OutputStream. Look up System.Web.HTTPHandler, System.IO.FileStream, and System.Web.HTTPResponse on MSDN for more info.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文