2011-08-09 3 views
4

내 웹 앱에 보고서 작성 도구를 만들고 싶습니다. 사용자는 사이트의 다른 부분을 통해 데이터를 수집 한 다음 해당 데이터를 문서 스타일 방식으로 사용할 수있는 "보고서"를 생성 할 수 있어야합니다. 나는 사용자가 기본 수학 기능을 사용하고 자신의 변수를 얻거나 설정할 수 있기를 바란다. 사용자가 Twig Template Engine과 같은 형식으로 보고서를 작성하고 특정 확장명 만 사용하도록 허용하는 경우 합리적으로 안전한 것으로 보입니까? 나뭇 가지 템플릿은 이미 마크 업에서 발견 된 모든 PHP를 제거하고 기본 문자열 변경 이외에 사용할 수있는 강력한 기능이 너무 많지 않습니다. 내 생각을 알려주십시오.사용자에게 PHP 템플릿 엔진 공개?

답변

3

Twig는 당신이 묘사하는 것과 정확히 똑같은 강력한 sandbox extension을 가지고 있습니다. 충분히 엄격한 보안 정책을 사용하면 여기서 어떤 문제도 볼 수 없습니다.

+0

널리 사용되는 이유는 무엇입니까? https://github.com/fabpot/Twig/issues/search?q=sandbox는 1 년 중 가장 좋은시기 였음을 시사하지만 누군가가 나뭇 가지의 모래 상자를 공격하기 위해 공동의 노력을 기울인 적이 있습니까? 정책 작성자를위한 모범 사례가 있습니까? –

+1

트위그가 기본 템플릿 엔진으로 사용되는 Symfony2 코드베이스 전체가 SektionEins의 [보안 감사] (http://symfony.com/blog/symfony-2-0)의 영향을 받았다는 것을 알고 있습니다. (마지막 글 머리 기호 "The Code"의 요점), 일반적으로 나뭇 가지와 샌드 박스 확장 기능이 특별히 테스트되었는지 여부는 말할 수 없습니다. 최선의 관행에 관한 한, 기본 정책을 제외하고는 아직 그와 같은 것이 의심 스럽습니다. – Problematic

+2

링크를 제공해 주셔서 감사합니다. 감사 범위 또는 기본 규칙에 대해서는 아무 것도 찾을 수 없습니다. OP에게, 저는 Symfony에게 무엇이든 가치있는 것을 보호하기 위해 의지하기 전에 샌드 박스에 의존하는지 여부를 묻습니다. 샌드 박스를 작성하면 공격자의 첫 번째 그룹이 항상 무언가를 발견했습니다. –

1

나뭇 가지가 필요한 것이면 왜 안 되니? 그것은 꽤 잘 끝났으며 샌드 박스 모드를 가지고 있으며 템플릿을 컴파일 할 수 있습니다. 반대로, PHP에서 PHP를 제공하는 것은 나눌 수 없으므로 일부 템플릿을 사용하면 나에게 나쁘지 않습니다.