PHP - 单击 php 脚本时输出视频文件而不播放

PHP - output video file without playing when clicking php script

信息:

我有一个网页:

<video width="400" controls> <source src="getvideo.php" type="video/mp4"> </video>

在我的 getvideo.php 文件中,我有一个脚本(与此类似的解决方案:http://www.tuxxin.com/php-mp4-streaming/),它将从网络根目录之外的安全、私有位置加载视频(例如 home/sites/test/protected/video.mp4) - [这是必要的,因为我不希望任何人能够直接访问或查看视频文件] - 并创建一个缓冲区来流式传输视频。这一切都很好并且按预期工作。

问题:

如果直接输入PHP文件的URL(www.exampledomain.com/getvideo.php),会自动加载视频屏幕,您将能够播放它。这不是所需的功能。相反,我希望保护视频免受直接访问。这可以通过使用 readfile($imagePath) 来实现图像文件,但不适用于视频文件。 (在图像的情况下,如果您尝试直接访问 PHP 文件,它只会输出关于图像的无意义信息) - 是否可以通过视频输出实现类似的功能?

除了您的 "attacks" 可能来自经过身份验证的用户而不是敌对站点之外,问题陈述让我想到了 CSRF 攻击。所以我想你可以使用类似 synchronizer token pattern 的东西来防止 CSRF 攻击。您将生成一个新的随机令牌并将其存储在 getvideo.php 可以访问以进行验证的某个位置。然后,getvideo.php 只会 return 如果使用有效令牌调用视频。