在Symfony2.1中保护一个slug

时间:2012-08-18 17:11:46

标签: symfony

你如何在Symfony2.1中找到一个slu ??

恶意用户可以将";rm -rf *"附加到ID值并删除整个网站。在symfony2.1中,是否有一种简单的方法来保护slu ??

我试图通过这种方式确保身份证明。

/**
 * 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
    );
}

你觉得这有必要吗?你会这样做吗?

1 个答案:

答案 0 :(得分:4)

您可以通过在cart_id注释中添加要求来确保@Route始终接受整数。 e.g

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

但是,由于Doctrine2使用带有参数化查询的PDO预处理语句,攻击者通过sql-injection执行恶意查询的可能性几乎为零。有关带参数化查询的预准备语句的详细信息,请参阅herehere