0

你如何在 Symfony2.1 中保护一个 slug?

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

我试图以这种方式确保身份。

/**
 * 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()
 */

但是攻击者通过 sql-injection 执行恶意查询的可能性仍然几乎为零,因为 Doctrine2 使用 PDO 准备语句和参数化查询。有关参数化查询的预准备语句的更多信息,请参见此处此处

于 2012-08-18T17:38:22.757 回答