php - Ajax 安全性:JSON 与外部对象
问题描述
正如Owasp CheatSheet 系列中提到的,在“防止旧浏览器的 JSON 劫持”部分中,应该始终返回带有外部对象的 JSON。结果,相同的参考断言像下面这样的 JSON 是可利用的:
[{"object": "inside an array"}]
它还指出以下 JSON 格式不可利用:
{"object": "not inside an array"}
但是,当我对数据库运行查询并使用 fetchAll(PDO::FETCH_ASSOC) 时,它会将数组完全采用第一种可利用的 JSON 格式。如何以第二种不可利用的格式从 fetchAll 生成 JSON?
已编辑
以下是我的 php fetchAll() 脚本:
public function retrieveData() {
$conn = parent::connected();
$inactive = '0';
$sql = "SELECT * FROM `category` WHERE term_status != :status";
$stmt = $conn->prepare($sql);
$stmt->bindParam("status", $inactive, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
赞赏。
解决方案
基本上,总是返回一个对象,其属性包含你的结果数组。对你来说,它看起来像这样。
return [ 'result' => $stmt->fetchAll(PDO::FETCH_ASSOC) ];
这将返回如下内容:
{ 'result': [ ...rows ] }
推荐阅读
- elasticsearch - 是否可以为弹性搜索索引中的属性设置默认数据类型
- flutter - 无法使用冻结包生成 classname.g.dart 类
- jsf - inputNumber 不起作用,即允许使用字母
- powershell-2.0 - 使用 PowerShell 搜索驱动器上的所有文件夹和子文件夹
- javascript - 在材料 ui 卡中将页脚与底部对齐(内部示例)
- react-native - 如何实现这个动画平面列表
- caching - 如何从阿波罗缓存中删除嵌套对象?
- python - 数据框到系列并返回 - 使用多索引
- python - (关闭)discord.py 导入文件写入 NameError: name 'client' is not defined
- laravel-5 - 根据用户角色重定向到不同的视图