우리는 PHP 편집기에서 PHP 내부에서 사용할 수 있지만, file_get_contents, file() 및 global과 같은 일부 명령에 액세스를 제한해야합니다.제한이있는 PHP 코드 실행
누군가 부울 응답 정규식으로 나를 도울 수 있습니까? 템플리트의 텍스트는 문자열에 저장됩니다.
이에 대한 아마 이상적인 방법 내가 아는하지만, 내가 지금 가지고 올 수 : 당신은 이것에 대한 preg_match을 사용할 수 있습니다
우리는 PHP 편집기에서 PHP 내부에서 사용할 수 있지만, file_get_contents, file() 및 global과 같은 일부 명령에 액세스를 제한해야합니다.제한이있는 PHP 코드 실행
누군가 부울 응답 정규식으로 나를 도울 수 있습니까? 템플리트의 텍스트는 문자열에 저장됩니다.
이에 대한 아마 이상적인 방법 내가 아는하지만, 내가 지금 가지고 올 수 : 당신은 이것에 대한 preg_match을 사용할 수 있습니다
원하는 작업은 거의 불가능합니다. 사람들이 컴퓨터에서 코드를 실행할 수 있도록 허용하면 공격으로부터 자신을 보호하기가 정말 어렵습니다.
여기에 제가 시도한 내용이 있습니다 : Sandbox. Source code.
기본적으로 파일 시스템 액세스, 쉘 액세스, aso에 대한 블랙리스트에있는 기능 목록을 많이 유지합니다. show_source
과 같은 파일 시스템을 읽을 수있는 일부 기능은 허용되지 않아야합니다.)
또한 $func = 'unlink'; $func(__FILE__);
과 같은 더 많은 숨겨진 공격을 $func = 'unlink'; ${'___xyz'.!$___xyz=Sandbox::checkVarFunction($func)}(__FILE__)
으로 설정하여 보호하려고 시도합니다.
추신 : 아직도 사람들이 PHP 코드를 사이트에서 실행할 수 있도록 허용하고 싶지는 않을 것입니다. 위험은 너무 큽니다. 대신 나는 사람들이 편집기 내부에서 템플릿 언어를 사용할 수있게 할 것이다. 좋은 후보는 Twig이 될 것입니다. 왜냐하면 그것은 특정 태그, 기능, 사용법을 제한 할 수있는 샌드 박스를 내장하고 있기 때문입니다 ...
자신을 완벽하게 보호하는 것은 매우 어려울 것입니다.
내가 그것을보고, 당신은 몇 가지 옵션이 있습니다 (file_get_contents 같은) 콘텐츠에서 허용되지 않습니다 미리 정의 된 문자열에 대한
검색하고 사용자가 때문에 저장할 수 없다는 오류 메시지가 표시 이. 그러나 "해킹"으로 이어져 어떤 경우에는 유효 할 수있는 ()
과 같은 가능한 모든 문자를 검색하게됩니다.
token_get_all을 사용하고 내용을 PHP로 분석하십시오. 그런 다음 전체 소스 코드, 토큰별로 토큰을 반복 할 수 있으며 허용하지 않는 토큰을 찾았는지 확인하십시오.
이 경우 자신의 언어 또는 DSL을 작성하십시오. 이 언어는 원하는 것을 정확하게 할 수 있어야합니다. 요구 사항에 따라 이것이 가장 쉽고 유지 보수가 용이 한 방법입니다.
분명히 문제가 있습니다. '$ a = 'file'은 어떨까요? $ a();'? – knittl
관련 : http://stackoverflow.com/questions/3115559/exploitable-php-functions/ – Unicron