簡體   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