0

Symfony2.1でスラッグをどのように確保しますか?

悪意のあるユーザーが";rm -rf *"id値に追加し、Webサイト全体を削除する可能性があります。symfony2.1では、スラッグを固定する簡単な方法はありますか?

私はこの方法でIDを確保しようとしました。

/**
 * The idea is to check that the slug cart_id is an id and not
 *
 * @Route("/{cart_id}/show", name="show_cart")
 * @Template()
 */
public function showCartAction($cart_id)
{

    if (!preg_match("/^[0-9]{2}$/", $cart_id))
    {
       throw new \Exception("the id is not correct");
    }

    $cart = $this->getCartManager()
        ->getCart($cart_id);

    return array(
        'cart'=> cart
    );
}

これは必要だと思いますか?このようにしますか?

4

1 に答える 1

4

アノテーションcart_idに要件を追加することで、が常に整数を受け入れるようにすることができます。@Route例えば

/**
 * @Route("/{cart_id}/show", name="show_cart", requirements={"cart_id" = ("\d+")})
 * @Template()
 */

ただし、Doctrine2はパラメータ化されたクエリでPDOプリペアドステートメントを使用するため、攻撃者がsql-injectionを介して悪意のあるクエリを実行する可能性はほとんどありません。パラメータ化されたクエリを使用したプリペアドステートメントの詳細については、ここここを参照してください。

于 2012-08-18T17:38:22.757 に答える