2014-10-30 3 views
0

맞춤 Twig 기능에서 XSS를 피할 수있는 방법은 무엇입니까?커스텀 Twig 기능에서 XSS를 피하십시오?

class TwigExtension extends \Twig_Extension 
{ 
    public function getName() 
    { 
     return 'html_helpers'; 
    } 

    public function getFunctions() 
    { 
     $options = array(
      'is_safe' => array('html') 
     ); 
     return array(
      new \Twig_SimpleFunction('greating', array($this, 'greating'),$options) 
     ); 
    } 

    public function greating($name) 
    { 
     return "Salut ".$name; 
    } 
} 

그리고 템플릿의 전화 :

이 고려 {{ greating("<script>alert('Sébastien')</script>") }}

는 그것은 JS 경고를 표시합니다. 어떻게 이것을 피할 수 있습니까?

+0

문서가 충분하지 않습니까? http://twig.sensiolabs.org/doc/filters/escape.html에'| e'가 있습니까? – fluminis

+0

@fluminis Twig에서 꽤 새로운 기능. 좋아, 할 수있어. '{{greating ("") | 이스케이프}}'어떻게 할 수 있습니까? – sdespont

답변

1

당신은 단지 나뭇 가지 이스케이프 필터처럼 htmlspecialchars에 이름을 감아 넣어 얻기에서 같은 스크립트를 막을 수는 내부적으로 사용

public function greating($name) 
{ 
    return "Salut ".htmlspecialchars($name); 
} 

http://twig.sensiolabs.org/doc/filters/escape.html

내부적으로

이 탈출은 PHP의 기본을 사용하여 HTML 이스케이프 전략을위한 htmlspecialchars 함수.