[英]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.