2013-04-24 26 views
1

是否有一個用於清理用戶輸入的Symfony2函數?清理Symfony2中的SQL用戶變量

這是我的代碼,

$action_id = $this->getRequest()->query->get('actionid'); 

    $conn = $this->get('database_connection'); 
    $query = $conn->fetchAll('SELECT * FROM api_codes WHERE `action_id` = "' . $action_id . '" LIMIT 1'); 

從表單獲取action_id,所以用戶輸入。我想知道是否有一個symfony2上的方法來清理除var關鍵的php函數之外的清理。

回答

2

我不認爲Symfony在控制器級別提供了任何特定的幫助器/方法來清理用戶輸入。但是,對於數據庫(SQL)注入,Doctrine附帶sanitization

換句話說,從documentation

$stmt = $conn->prepare('SELECT * FROM api_codes WHERE `action_id` = :action_id LIMIT 1'); 
$stmt->bindValue("action_id", $action_id); // Which would prevent SQL Injection 
$stmt->fetchAll(); // Which could also be done in a one line refactoring 
0

如果你談論的SQL轉義您可以在當前的例子使用$conn->quote($input);。您也可以使用像Ahmed建議的準備好的語句。

1

你至少應該使用的參數與DBAL(因爲這是你使用的是什麼):

$conn->fetchAll(
    'SELECT * FROM api_codes WHERE `action_id` = :id LIMIT 1', 
    array("id"=>$action_id) 
); 

或代碼打開SQL注入。