gpt4 book ai didi

javascript - 通过PHP请求特定音频文件的方法比这种方法更简单吗?

转载 作者:行者123 更新时间:2023-12-03 02:37:18 25 4
gpt4 key购买 nike

我需要将php脚本输出中的音频文件放入HTML音频标签的源中。我无法指定哪个,因为我无法添加POST变量,因此通过ajax调用设置SESSION“songRequested”,然后请求文件,然后使用 session 变量来指定需要哪个文件,因此无法指定。

的HTML

<audio id ="player">
<source src="" id = "source">
</audio>

JS
$.post('includes/songrequest.php',{'request':songName},function(){
$('#source').attr("src","includes/songrequest.php");
player.load();
player.play();
});
//Declare the session variable as the file you want and set the audio source to be the songrequest php below with the session variable as the file to be downloaded.

的PHP
<?php
session_start();
if(!isset($_SESSION['u_uid'])){
exit();
}
if(isset($_POST['request'])){
$_SESSION['request'] = $_POST['request'];
//If requesting with post variables, set the session variable to it.
exit();
}
//Otherwise, retrieve the file set as the session variable
$file = dirname(getcwd(),2)."\\users\\".$_SESSION['u_uid']."\\".$_SESSION['

header('Content-Type: audio/'.pathinfo($file,PATHINFO_EXTENSION));
header('Cache-Control: no-cache');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
readfile($file);

我不得不这样做,因为当我在audio标签中调用php源时无法传递post变量,而且我不知道一种真正在javascript中真正处理音频数据的方法。

最佳答案

集会没有比post请求更安全的get了。两者都可以欺骗您的网站。如果您问我,最好的方法是不要使用它们中的任何一个,而应使用URI段。我应该提一下,这比发布或获取URI的主要优势不再安全,因为您仍然可以使用获取和发布数据而不会混淆它。考虑到这一点,从逻辑上讲,它是您要识别的资源,因此,仅使用URL / URL在某种意义上是有意义的。

URI是URL中位于“真实”资源位置之后的部分。一个例子是

$('#source').attr("src","includes/songrequest.php/{songname}‌​");

其中 {songname}是请求URI。这通常在MVC框架中使用,该框架通过主 index.php传递所有内容。如 www.example.com/index.php/some_controller/some_method。通常,通过使用mod_rewrite(HTACCESS)重写URL可以隐藏事实。

现在访问该数据,您可以在 $_SERVER Super Global中查找,它应该类似于 $_SERVER['PATH_INFO'](我忘了脑袋)。您可能需要修剪一些斜线或将其清理干净。

现在,关于该数据的内容。我建议甚至不要传递文件名,而只是传递哈希,ID或歌曲名等。然后使用它来查找实际路径。这将防止使用您不希望使用的路径,因为该路径来自内部数据源,该内部数据源由您正在传递的“数据”段查找。

因此,您将传递类似这样的内容(如果使用漂亮的哈希值)
$('#source').attr("src","includes/songrequest.php/2Bzi0U8t");

然后,您在数据库中查找该值,获取URL,然后退出。

我也不认为仅仅这样做就不会有任何内在的错误
$('#source').attr("src","includes/songrequest.php?song=2Bzi0U8t");

这里的关键是不要传递实际路径,因为目录穿越可能会利用该路径。黑客在哪里提供类似这样的路径
song=../../../somefile_we_dont_want_a_hacker_accessing.txt

基本上,它使他们可以在文件系统上四处浏览并访问不应访问的内容。但是,通过使用最糟糕的查找方法,他们可以查找已经存储在数据库中的内容。

有道理。

关于javascript - 通过PHP请求特定音频文件的方法比这种方法更简单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com