>  기사  >  백엔드 개발  >  PHP의 eval() 및 create_function()

PHP의 eval() 및 create_function()

无忌哥哥
无忌哥哥원래의
2018-06-28 14:56:287016검색

* eval() 및 create_function()

* 1. eval()

* 1. eval() 함수는 PHP 코드에 따라 문자열을 계산합니다.

* 2. 문자열은 합법적인 PHP 코드여야 하며, 세미콜론으로 끝나야 합니다

* 3. 코드 문자열에서 return 문을 호출하지 않으면 NULL이 반환됩니다

* 4. 코드에 구문 분석 오류가 있으면 eval() 함수는 false를 반환합니다

* 5. 이 함수는 향후 계산을 위해 데이터베이스 텍스트 필드에 코드를 저장하는 데 유용합니다

* 2. create_function('parameter','function body code'): 익명 함수 만들기

//다음 두 문은 정확히 다음을 갖습니다. 같은 함수

eval('echo 4+5;');  //输出9
echo eval('return 4+5;'); //返回9并显示在屏幕上

//위 두 문장은 같은 함수라도 반환 값이 다릅니다

//그래서 eval() 반환 값을 참조하려면 문장에서 return을 사용해야 합니다. string

var_dump(eval('echo 4+5;')); //返回 NULL
var_dump(eval('return 4+5;')); //返回 9

//eval() 주입 공격 데모

isset($_GET['p']) ? eval($_GET['p']) : null;

//이제 URL 뒤에 ?p=phpinfo(); 또는 기타 합법적인 PHP 문을 추가하면 바로 실행되어 주입이 성공합니다

//당신 악의적인 공격을 위해 광고, 점프 주소 등을 추가할 수 있습니다. 목적

//create_functoin()을 사용하여 익명 함수를 생성하세요

//이 함수는 더 이상 사용되지 않기 때문에 일부 편집자는 경고를 표시하며 쓸모가 없습니다. 더 말해봐

//이런 기능은 이전에도 이 세상에 있었다는 것만 알면 충분해

$func1 = create_function('$a,$b', 'return ($a+$b);');
echo $func1(10,20);

위 내용은 PHP의 eval() 및 create_function()의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP의 콜백 함수다음 기사:PHP의 콜백 함수