Symfony 2.0路由通配符是否已消毒?

时间:2014-07-22 06:07:52

标签: php symfony

...或者我是否必须按照以下方式对它们进行消毒?

class RelationshipController extends Controller
{
    ...

    public function deleteAction($objectId)
    {
        $objectId = filter_var($objectId, FILTER_SANITIZE_NUMBER_INT)
        ...

1 个答案:

答案 0 :(得分:6)

默认情况下,Symfony Router通过以下正则表达式匹配路由参数:[^/]+。因此,除/之外的任何内容都是允许的。

如果你想确保$objectId是一个整数,你应该像这样定义一条路线:

my_route:
    path: /my/route/{objectId}
    defaults: { _controller: MyBundle:Controller:myAction }
    requirements:
        objectId: \d+

这样,您的$objectId将始终是整数的字符串表示形式,因为如果它不是,则Symfony将不匹配路径。

所以这将匹配你的控制器:

GET /my/route/234

这将抛出404未找到:

GET /my/route/asd