백엔드 개발 PHP 튜토리얼 利用PHP实现智能文件类型检测的实现代码_PHP

利用PHP实现智能文件类型检测的实现代码_PHP

Jun 01, 2016 pm 12:15 PM
지능적인

使用文件后缀和MIME类型检测
通常我们想严格限制文件类型的时候,可以简单地用$_FILES['myFile']['type']  取得文件的 MIME类型然后来检测它是否是合法的类型。
或者我们可以取文件名的最后几个字符来获取文件后缀,不幸的是,这些方法并不足够,可以很容易地改变文件的扩展名绕过这个限制。此外,MIME类型信息是由浏览器发送的,而且,对于大多数浏览器,即使不是全部,是根据文件的扩展名的来给出MIME类型信息的!因此,MIME类型,就像扩展名一样,可以很容易地欺骗。
使用“魔术字节”
确定文件类型的最佳方法是通过检查文件的前几个字节 – 称为“魔字节”。魔术字节本质上是文件头中不同长度在2到40个字节之间的,或在文件末尾的签名。有上百个类型的文件,他们中相当多的文件类型有好几个文件签名与它们相关联。在这里你可以看到一个文件签名列表。
偷懒的办法是使用fileinfo扩展,PHP 5.3.0 默认是启用的(根据官方MANUAL),如果没有启用,你可以自己启用
如在windows下面:
复制代码 代码如下:
extension=php_fileinfo.dll


linux下面:
复制代码 代码如下:
extension=fileinfo.so
#如不能正常工作,再加上下面这条
#mime_magic.magicfile=/usr/share/file/magic


windows下面如不能正常工作:
可参考:http://www.php.net/manual/en/fileinfo.installation.php#82570
下载file-5.03-bin.zip ,解压出来,在其中的share目录有magic.mgc 、magic 两个文件。
然后添加一个名为MAGIC的系统环境变量指向magic 文件。如D:\software\PHP\extras\misc\magic  
复制代码 代码如下:
function getFileMimeType($file) {
$buffer = file_get_contents($file);
$finfo = new finfo(FILEINFO_MIME_TYPE);
return $finfo->buffer($buffer);
}
$mime_type = getFileMimeType($file);
switch($mime_type) {
case "image/jpeg":
// your actions go here...
}

处理图像上传
如果你打算只允许图像上传,那么你可以使用内置的getimagesize()函数,以确保用户实际上是上传一个有效的图像文件。如果该文件不是有效的图像文件,这个函数返回false。
复制代码 代码如下:
// 假设file input 域的name 属性为myfile
$tempFile = $_FILES['myFile']['tmp_name']; // path of the temp file created by PHP during upload
$imginfo_array = getimagesize($tempFile); // returns a false if not a valid image file
if ($imginfo_array !== false) {
$mime_type = $imginfo_array['mime'];
switch($mime_type) {
case "image/jpeg":
// your actions go here...
}
}
else {
echo "This is not a valid image file";
}

手动读取和解释“魔法字节”
如果由于某种原因,你不能安装FileInfo扩展,那么你仍然可以手动确定,通过读取文件的前几个字节,并比较它们与已知的魔法与特定文件类型相关联的字节的文件类型。这个过程肯定少许的试验和错误,因为还有一种可能,有少数非法的魔法字节与合法文件格式关联了。
然而这不是不可能的,几年前,我被要求做一个只允许真正的 mp3 文件上传的脚本文件,并且,当时我们不能用 Fileinfo, 我们只能依靠这种手动检测的方式了.
我花了一段时间来解析一些mp3文件的非法魔法字节,但很快,我得到了一个稳定的上传脚本。
在本文结束前,我想给大家一个警告: 确保你永远没有调用一个 include() 来包含一个上传的文件,因为PHP代码很可能会巧妙地隐藏在图片里面,并且图片也可以成功的通过你的文件检测,当这样的脚本运行时,只可能给系统带来破坏。
译自:http://designshack.co.uk/articles/php-articles/smart-file-type-detection-using-php/
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11의 스마트 앱 제어: 켜거나 끄는 방법 Windows 11의 스마트 앱 제어: 켜거나 끄는 방법 Jun 06, 2023 pm 11:10 PM

지능형 앱 제어는 랜섬웨어나 스파이웨어와 같이 데이터를 손상시킬 수 있는 승인되지 않은 앱으로부터 PC를 보호하는 데 도움이 되는 Windows 11의 매우 유용한 도구입니다. 이 문서에서는 스마트 앱 컨트롤이 무엇인지, 어떻게 작동하는지, Windows 11에서 켜거나 끄는 방법을 설명합니다. Windows 11의 스마트 앱 제어란 무엇입니까? SAC(스마트 앱 제어)는 Windows 1122H2 업데이트에 도입된 새로운 보안 기능입니다. Microsoft Defender 또는 타사 바이러스 백신 소프트웨어와 함께 작동하여 장치 속도를 늦추거나 예상치 못한 광고를 표시하거나 기타 예상치 못한 작업을 수행할 수 있는 잠재적으로 불필요한 앱을 차단합니다. 스마트 애플리케이션

날아다니는 것, 입을 벌리는 것, 쳐다보는 것, 눈썹을 치켜올리는 것 등의 얼굴 특징을 AI가 완벽하게 모방할 수 있어 영상사기 예방이 불가능하다. 날아다니는 것, 입을 벌리는 것, 쳐다보는 것, 눈썹을 치켜올리는 것 등의 얼굴 특징을 AI가 완벽하게 모방할 수 있어 영상사기 예방이 불가능하다. Dec 14, 2023 pm 11:30 PM

이렇게 강력한 AI 모방 능력을 가지고 있다면, 막는 것은 사실상 불가능합니다. 이제 AI의 발전이 이 정도 수준에 이르렀나? 앞발은 이목구비를 날리게 하고, 뒷발은 쳐다보는 것, 눈썹을 치켜올리는 것, 삐죽이는 것 등 아무리 과장된 표정이라도 완벽하게 흉내낸다. 난이도를 높이고, 눈썹을 더 높이 올리고, 눈을 크게 뜨고, 입 모양까지 비뚤어지게 표현하는 등 가상 캐릭터 아바타가 표정을 완벽하게 재현할 수 있다. 왼쪽의 매개변수를 조정하면 오른쪽의 가상 아바타도 그에 따라 움직임을 변경하여 입과 눈을 클로즈업하여 모방이 완전히 동일하다고는 할 수 없으며 표정만 정확합니다. 마찬가지다(맨 오른쪽). 이 연구는 GaussianAvatars를 제안하는 뮌헨 기술 대학과 같은 기관에서 나왔습니다.

MotionLM: 다중 에이전트 모션 예측을 위한 언어 모델링 기술 MotionLM: 다중 에이전트 모션 예측을 위한 언어 모델링 기술 Oct 13, 2023 pm 12:09 PM

이 글은 자율주행하트 공개 계정의 허가를 받아 재인쇄되었습니다. 재인쇄를 원하시면 출처에 문의해 주세요. 원제: MotionLM: Multi-Agent Motion Forecasting as Language Modeling 논문 링크: https://arxiv.org/pdf/2309.16534.pdf 저자 소속: Waymo 컨퍼런스: ICCV2023 논문 아이디어: 자율 차량 안전 계획을 위해 미래 행동을 안정적으로 예측 도로요원의 역할이 중요합니다. 본 연구는 연속적인 궤적을 개별 모션 토큰의 시퀀스로 표현하고 다중 에이전트 모션 예측을 언어 모델링 작업으로 처리합니다. 우리가 제안하는 모델인 MotionLM은 다음과 같은 장점을 가지고 있습니다.

몇 년 안에 프로그래머가 쇠퇴할 것이라는 사실을 알고 계십니까? 몇 년 안에 프로그래머가 쇠퇴할 것이라는 사실을 알고 계십니까? Nov 08, 2023 am 11:17 AM

"ComputerWorld" 잡지는 IBM이 엔지니어가 필요한 수학 공식을 작성한 다음 이를 제출하면 프로그래밍이 종료되도록 하는 새로운 언어 FORTRAN을 개발했기 때문에 "프로그래밍은 1960년에 사라질 것"이라는 기사를 쓴 적이 있습니다. 몇 년 후 우리는 비즈니스 용어를 사용하여 문제를 설명하고 컴퓨터에 COBOL이라는 프로그래밍 언어를 사용하면 더 이상 프로그래머가 필요하지 않다는 새로운 말을 들었습니다. 이후 IBM은 직원들이 양식을 작성하고 보고서를 생성할 수 있는 RPG라는 새로운 프로그래밍 언어를 개발해 회사의 프로그래밍 요구 사항 대부분을 이를 통해 완료할 수 있다고 합니다.

SLAM 기술을 자율주행에 적용한 내용을 다룬 기사 SLAM 기술을 자율주행에 적용한 내용을 다룬 기사 Apr 09, 2023 pm 01:11 PM

포지셔닝은 자율주행에서 대체할 수 없는 위치를 차지하고 있으며 앞으로도 발전 가능성이 높습니다. 현재 자율주행에서의 위치 확인은 RTK와 고정밀 지도에 의존하고 있어 자율주행 구현에 많은 비용과 어려움이 추가됩니다. 인간이 운전할 때 자신의 글로벌 고정밀 포지셔닝과 상세한 주변 환경을 알 필요가 없다고 상상해 보십시오. 글로벌 내비게이션 경로가 있고 경로에서 차량의 위치를 ​​일치시키는 것만으로도 충분합니다. SLAM 분야 핵심기술. CML(Concurrent Mapping and Localiza)이라고도 알려진 SLAMSLAM(Simultaneous Localization and Mapping)이란 무엇입니까?

GR-1 푸리에 지능형 범용 휴머노이드 로봇이 곧 사전 판매를 시작합니다! GR-1 푸리에 지능형 범용 휴머노이드 로봇이 곧 사전 판매를 시작합니다! Sep 27, 2023 pm 08:41 PM

휴머노이드 로봇은 높이 1.65미터, 무게 55킬로그램, 몸의 자유도가 44도입니다. 빠르게 걷고, 장애물을 빠르게 피하고, 경사면을 꾸준히 오르락내리락하고, 충격 간섭에 저항할 수 있습니다. 푸리에 인텔리전스(Fourier Intelligence)의 만능 휴머노이드 로봇 GR-1이 사전 판매를 시작했습니다. 로봇 강당 푸리에 인텔리전스(Fourier Intelligence)의 만능 휴머노이드 로봇 푸리에GR-1(FourierGR-1)이 사전 판매를 시작했습니다. GR-1은 고도의 생체공학적 몸통 구성과 의인화된 모션 제어 기능을 갖추고 있으며, 몸 전체가 44도의 자유도를 갖고 있으며, 걷기, 장애물 회피, 장애물 건너기, 경사면 오르내리기, 간섭 저항 및 다양한 도로 적응 능력을 갖추고 있습니다. 표면. 그것은 일반적인 인공 지능 시스템입니다. 공식 웹사이트 사전 판매 페이지: www.fftai.cn/order#FourierGR-1# 푸리에 인텔리전스를 다시 작성해야 합니다.

화웨이는 스마트 웨어러블 분야에서 심박수를 기반으로 사용자의 감정 상태를 평가할 수 있는 Xuanji 감지 시스템을 출시할 예정입니다. 화웨이는 스마트 웨어러블 분야에서 심박수를 기반으로 사용자의 감정 상태를 평가할 수 있는 Xuanji 감지 시스템을 출시할 예정입니다. Aug 29, 2024 pm 03:30 PM

최근 화웨이는 Xuanji 감지 시스템을 탑재한 새로운 스마트 웨어러블 제품을 9월에 출시할 예정이라고 발표했는데, 이는 화웨이의 최신 스마트 워치가 될 것으로 예상됩니다. 이 신제품은 고급 감정 건강 모니터링 기능을 통합하여 사용자에게 정확성, 포괄성, 속도, 유연성, 개방성 및 확장성의 6가지 특성을 갖춘 포괄적인 건강 평가를 제공합니다. 이 시스템은 슈퍼 센싱 모듈을 사용하고 다중 채널 광학 경로 아키텍처 기술을 최적화하여 심박수, 혈중 산소 및 호흡수와 같은 기본 지표의 모니터링 정확도를 크게 향상시킵니다. 또한 Xuanji Sensing System은 심박수 데이터를 기반으로 감정 상태에 대한 연구를 확장했으며, 생리적 지표에 국한되지 않고 사용자의 감정 상태와 스트레스 수준도 평가할 수 있습니다. 60개 이상의 스포츠에 대한 모니터링을 지원합니다. 심혈관, 호흡기, 신경, 내분비,

보행자 궤적 예측을 위한 효과적인 방법과 일반적인 기본 방법은 무엇입니까? 최고의 컨퍼런스 논문 공유! 보행자 궤적 예측을 위한 효과적인 방법과 일반적인 기본 방법은 무엇입니까? 최고의 컨퍼런스 논문 공유! Oct 17, 2023 am 11:13 AM

궤적 예측은 지난 2년 동안 추진력을 얻었지만 대부분은 차량 궤적 예측의 방향에 중점을 두고 있습니다. 오늘날 자율 주행 심장은 제한된 시나리오에서 인간의 보행자 궤적 예측을 위한 알고리즘인 NeurIPS를 공유합니다. 움직임 패턴은 일반적으로 어느 정도 제한된 규칙을 따릅니다. SHENet은 이러한 가정을 바탕으로 암묵적인 장면 규칙을 학습하여 사람의 미래 궤적을 예측합니다. 이 기사는 자율주행하트의 원본임을 인정받았습니다! 저자의 개인적 이해는 현재 사람의 미래 궤적을 예측하는 것이 인간 움직임의 무작위성과 주관성으로 인해 여전히 어려운 문제라는 것입니다. 그러나 제한된 장면에서 인간의 움직임 패턴은 장면 제약(예: 평면도, 도로 및 장애물)과 인간 대 인간 또는 인간 대 객체 상호 작용으로 인해 달라지는 경우가 많습니다.

See all articles