在用户提交表单后,我基本上是在这样做: 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} )
答案 0 :(得分:0)
不,没有安全问题。当您分配变量时,PHP永远不会自行执行数据,您必须调用以需要执行数据的方式解释数据的函数。 json_decode()
不会做类似的事情,它只是将数据从一种格式静态转换为另一种格式。
危险操作的一些示例是eval()
(执行任意代码),call_user_func()
(函数名称来自用户输入),extract()
(从数组创建变量) ,然后将参数插入SQL查询字符串中(使用参数化查询来防止SQL注入)。如果将用户输入包含在HTML输出中而没有对其进行清理或编码,那么您也可能会遇到XSS问题。