繁体   English   中英

PHP:清理json $ _POST的说明

[英]PHP: clarification on sanitizing json $_POST

用户提交表单后,我实际上是在做: 用php清理JSON来清理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”等?

编辑:(也只是为了澄清,我没有像call_user_func($form_id);之后做任何明显的可怕的事情)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM