PHP:清理json $ _POST的说明

时间:2018-12-15 00:15:34

标签: php json security post sanitize

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

json_decode创建一个对象,该对象传递给自定义类方法:

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

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

在$ this-> validate_form中,我立即进行验证,类似于上面链接中的解决方案。

在运行时将解码后的json,form_id分配给变量,然后将这些值传递给自定义方法是否存在安全漏洞?

即是否有一些利用,例如仅通过传递值/存储运行时值就可以在此处实现的类似json编码的“ call_user_func”等功能?

编辑:(也只是为了澄清,在进行类似{{1} )

1 个答案:

答案 0 :(得分:0)

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

危险操作的一些示例是eval()(执行任意代码),call_user_func()(函数名称来自用户输入),extract()(从数组创建变量) ,然后将参数插入SQL查询字符串中(使用参数化查询来防止SQL注入)。如果将用户输入包含在HTML输出中而没有对其进行清理或编码,那么您也可能会遇到XSS问题。