PHP:澄清清理 json $_POST

PHP: clarification on sanitizing json $_POST

用户提交表单后 post,我基本上是这样做的: 清理我的 json_decoded 输入。

json_decode 创建一个对象,我将其传递给自定义 class 方法:

$body = json_decode($_POST['body']);
$form_id = $_POST['form_id'];

$errors = $this->validate_form( $form_id, $body, $options ); 

在 $this->validate_form 中,我立即像上面 link 中的解决方案一样进行验证。

在 运行 时将解码的 json、form_id 分配给变量,然后将这些值传递给自定义方法是否存在安全漏洞,即使首先完成了与他们一起消毒后?

即是否有一些漏洞,比如花哨的 json 编码 'call_user_func' 等可以在这里实现,只需传递 values/storing 运行 时间值?

编辑:(也只是为了澄清,在点赞 call_user_func($form_id); 之后我并没有做任何明显糟糕的事情 )

不,没有安全问题。 PHP 分配变量时永远不会自行执行数据,您必须调用以需要执行数据的方式解释数据的函数。 json_decode() 不会做那样的事情,它只是将数据从一种格式静态转换为另一种格式。

一些危险操作的例子是eval()(它执行任意代码),call_user_func()(函数名来自用户输入),extract()(它从数组),并将参数插入 SQL 查询字符串(使用参数化查询来防止 SQL 注入)。如果您在 HTML 输出中包含用户输入而不对其进行清理或编码,您也可以 运行 进入 XSS 问题。