最近,我遇到了一个挑战,即实现允许用户编辑特定自定义帖子的功能,以便根据该帖子的元数据下载json文件。我终于完成了任务(至少在某种意义上是这样),但现在我最担心的是我的解决方案的安全性。
代码如下(这是一个插件,目录中有三个文件):
功能。php
// Main plugin file. This is where I output button for custom post type edit page
/*...*/
<button data-postid="<?php echo $post->ID; ?>" data-fileurl="<?php echo plugins_url(\'download_json.php\',__FILE__); ?>" class="button-secondary" id="mycp-download-json" >Download JSON</button>
/*...*/
脚本。js公司
jQuery(document).ready(function(){
var $btn = jQuery(\'#mycp-download-json\');
$btn.on(\'click\', function(e){
e.preventDefault();
window.location = jQuery(this).data(\'fileurl\') + \'?postid=\' + jQuery(this).data(\'postid\');
});
});
下载\\u json。php
<?php
require(dirname(dirname(dirname(__DIR__))) . \'/wp-load.php\');
$postid = (int)($_GET[\'postid\']);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= file.json");
header("Content-Transfer-Encoding: binary");
$fields = get_post_meta($postid,\'\', true);
echo json_encode($fields, JSON_HEX_APOS);
下面是我的问题:
这很简单current_user_can()
检查是否足以防止未经授权的下载(例如键入url)一般来说,这样实现生成下载功能有效吗?是否需要创建单独的文件来处理下载请求(在这种情况下是download\\u json.php)当我只包含wp加载(而不是整个wp博客标题)时,是否会出现其他安全问题