gpt4 book ai didi

php - parse_str 随机向键添加分号

转载 作者:可可西里 更新时间:2023-10-31 22:45:39 24 4
gpt4 key购买 nike

我将查询字符串作为查询字符串的一部分传递给 PHP 脚本。

有点像这样:

$.post('/url', {
id: postID
filters: $('#form').serialize()
});

然后在我的 PHP 中,我使用 parse_str 读取 filters:

<?php
$postID = $this->input->post('id');
parse_str($this->input->post('filters'), $filters);

问题是 parse_str; 随机添加到键中。我得到这样的结果:

array(4) {
["users"]=>
string(0) ""
["companies;"]=>
string(0) ""
["pref;_123"]=>
string(0) ""
["products;"]=>
array(2) {
[0]=>
string(4) "1234"
[1]=>
string(4) "5678"
}
}

为什么服务器要添加;?我在另一台服务器上试过,但没有发生。通过 CLI 进行测试时也不会发生这种情况。

编辑:似乎这不是parse_str 的错,而是某种 XSS 过滤器。 $this->input->post('filters')(甚至 $_POST['filters']!)包含 ; 字符.我检查了一下,jQuery 没有添加它们。

编辑:我设法“修复”了这个问题:

$filters = array_combine(array_map(function($x){
return str_replace(';', '', $x);
}, array_keys($filters)), array_values($filters));

最佳答案

这是由 Codeigniter 中的配置变量 global_xss_filtering 引起的。将其设置为 false 以禁用此行为。

另见:
xss_clean adds semicolon to anything with an &
CodeIgniter adding semicolons

关于php - parse_str 随机向键添加分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12305802/

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