gpt4 book ai didi

php - 如何使用 PHP 安全地将 JSON 数据写入文件

转载 作者:IT王子 更新时间:2023-10-28 23:54:53 26 4
gpt4 key购买 nike

我有用于编辑图像的 HTML 表单。所有数据都存储在 JSON 中。当我更改当前图像时,我想通过 PHP 脚本将更改保存到文本文件中。如果我返回到之前的图像,此配置将再次从该文件发送到表单。

我的问题是:

如何安全地写入/读取此类数据。在哪里以及如何有效地检查数据以防止某些 JS/PHP 代码注入(inject)?

我在下面附上了一些概念代码:

JavaScript(使用 jQuery):

// Writing
$.ajax({
global: false,
type: "POST",
cache: false,
dataType: "json",
data: ({
action: 'write',
config: JavaScriptJSON_Obj
}),
url: 'read-write.php'
});

// Reading
$.ajax({
global: false,
type: "POST",
cache: false,
dataType: "json",
data: ({
action: 'read'
}),
url: 'read-write.php',
success: function(data){
JavaScriptJSON_Obj = data;
}
});

PHP 示例(读写.php):

switch ($_REQUEST['action']) {
case 'write':
file_put_contents('config.txt', $_REQUEST['config']);
break;
case 'read':
$s = file_get_contents('config.txt');
echo json_encode($s);
break;
}

最佳答案

您的代码的问题在于它无法正常工作,安全问题除外。在将数据存储在文件中之前,您必须序列化数据或将其编码为 json,即。像这样:

switch ($_REQUEST['action']) {
case 'write':
file_put_contents('config.txt', json_encode($_REQUEST['config']));
break;
case 'read':
readfile('config.txt');
break;
}

序列化是这样的:

switch ($_REQUEST['action']) {
case 'write':
file_put_contents('config.txt', serialize($_REQUEST['config']));
break;
case 'read':
$data = unserialize(file_get_contents('config.txt'));
echo json_encode($data);
break;
}

只要你确保你读/写的路径是正确的,这段代码不存在代码注入(inject)问题。唯一的潜在问题是您是否可以选择要使用的文件(而不是将“config.txt”硬编码到代码中)。然后您必须验证以确保该文件位于给定目录等中。

关于php - 如何使用 PHP 安全地将 JSON 数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187052/

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