현재 양식에서 is_uploaded_file
은 파일 업로드가 활성화되어 있는지 확인합니다 (그렇지 않으면 업로드 된 파일 일 수 없음). 제공된 파일 이름이 실제로 PHP에서 생성 된 것입니다. 문제는 항상 true
을 반환 한 후
is_uploaded_file($_FILES['blah']['tmp_name'])
업로드 동안 없었다 경우 이후
이 정말 도움이되지 않습니다.
그러나 $_FILES
은 PHP 4.1.0부터 "만"사용 가능했으며 is_uploaded_file
은 PHP 4.0.3에서 처음 등장했습니다. 여기서 논리적으로 보이는 결론은 $_FILES
수퍼 글로벌을 사용하기 전에 업로드 된 파일 처리가 안전하게 이루어지기가 어려웠습니다.. 그 밖의 것이 없다면, non-superglobals을 주입 할 수 있고, 매우 쉽게 register_globals
을 활성화 할 수 있습니다. 이것은 PHP의 보안과 관련하여 또 다른 불만 사항이었습니다.
오늘 코드를 작성하고있는 것처럼 $_FILES
을 사용하는 경우 "bad"파일을 처리하도록 당신을 속일 수있는 공격 벡터가 없기 때문에 현재 구현에서 is_uploaded_file
은 "쓸모가 없습니다"라고 말하고 싶습니다.
is_uploaded_file
은 파일을 업로드하고 프로그래머가 사용할 수있게하는 방법에 관계없이 현재 및 향후 사용할 수있는 한 올바르게 작동하는 것이 보장됩니다. . 어쩌면 구체적인 것은 없지만 보증과 함께 제공되는 "안전한 파일 업로드"개념을 추상화 한 것입니다. 나는 $_FILES
에 대한 보증이 없다고 생각할 것이다. (다시 말하지만, 현재 상황이 "더 나쁘다"면 회귀라고 생각한다.)
출처
2011-11-24 20:10:43
Jon
수정 :'is_uploaded_file()'not is_upload_file()'. – MacMac
'move_uploaded_file()'도 똑같은 검사를 다시하기 때문에 중복됩니다. – mario
@mario : 아니요. 중복되지는 않습니다. 왜냐하면 다른 사람과 전화를해야만하기 때문입니다. 당신은 그들을 고립되어 사용할 수 있습니다. –