正如Owasp CheatSheet系列中所提到的,在"防止旧浏览器的JSON劫持"一节中,应该始终返回外部带有对象的JSON。因此,相同的引用断言如下JSON是可利用的:
[{"object": "inside an array"}]
它还指出以下JSON格式不可利用:
{"object": "not inside an array"}
然而,当我对数据库运行查询并使用fetchAll(PDO::FETCH_ASSOC(时,它会使数组完全采用第一种可利用的JSON格式。如何使fetchAll中的JSON成为第二种不可利用的格式?
已编辑
以下是我的phpfetchAll((脚本:
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 ] }