머리속에 갑자기 방법이 떠올라 가장 많이 쓰이는 jpg,gif,png,zip 만 해서 파일 확장자가 맞게 되어 있는지를 검사하는 함수를 만들어 보았습니다. 만일 스크립트 파일을 확장자를 이미지 확장자로 바꾼다할 지라도 유효성 검사에서 실패하겠죠.
function validate_ext($file, $ext="gif")
{
$ext = strtolower($ext);
if (!in_array($ext, array('jpg', 'jpeg', 'png', 'gif', 'zip'))) {
return false;
}
if ($fp = fopen($file, 'rb')) {
$contents = base64_encode(fread($fp, 30));
fclose($fp);
switch ($ext) {
case 'jpeg':
case 'jpg': $pattern = "/^\/9j\/4AAQSkZJRgABA/"; break;
case 'png': $pattern = "/^iVBORw0KGgoAAAANSUhEUgAAA/"; break;
case 'gif': $pattern = "/^R0lGODlh/"; break;
case 'zip': $pattern = "/^UEsDBBQABAAIA/"; break;
}
if (preg_match($pattern, $contents)) {
return true;
}
}
return false;
}
예를 들어 validate_ext('path/to/img.gif', 'gif') 검사를 했을 때 올바른 확장자의 파일일 경우 true값이 리턴됩니다.
시간나면 다른 확장자들도 추가해야 겠네요.
댓글 4개
실제 파일인지 검사하는거네요
좋은 팁 감사합니다.
스크랩 해 놓고 나중에 적용 해봐야 겠습니다.
근데 비표준(뭘하건 이게 문제죠)파일은 어떻게 하죠?
예를들어 zip파일을 winzip, winrar, alzip 등으로 압축률 이리저리 틀리게 압축하거나 암호넣어 압축했을시에도 패턴이 일치될까요? 파일 헤더는 같으려나.....
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 2230 | 16년 전 | 1295 | ||
| 2229 | 16년 전 | 2164 | ||
| 2228 | 16년 전 | 3228 | ||
| 2227 | 16년 전 | 2173 | ||
| 2226 | 16년 전 | 1756 | ||
| 2225 | 16년 전 | 1521 | ||
| 2224 |
|
16년 전 | 2051 | |
| 2223 | 16년 전 | 4737 | ||
| 2222 | 16년 전 | 1419 | ||
| 2221 |
|
16년 전 | 2153 | |
| 2220 |
|
16년 전 | 2141 | |
| 2219 |
|
16년 전 | 2410 | |
| 2218 |
|
16년 전 | 2153 | |
| 2217 |
|
16년 전 | 4441 | |
| 2216 |
|
16년 전 | 2933 | |
| 2215 | 16년 전 | 2871 | ||
| 2214 | 16년 전 | 1607 | ||
| 2213 | 16년 전 | 1253 | ||
| 2212 |
|
16년 전 | 3956 | |
| 2211 |
|
16년 전 | 1624 | |
| 2210 |
|
16년 전 | 1622 | |
| 2209 | 16년 전 | 2117 | ||
| 2208 | 16년 전 | 1888 | ||
| 2207 |
letsgolee
|
16년 전 | 1500 | |
| 2206 |
|
16년 전 | 3929 | |
| 2205 | 16년 전 | 1768 | ||
| 2204 | 16년 전 | 3145 | ||
| 2203 | 16년 전 | 3030 | ||
| 2202 | 16년 전 | 1055 | ||
| 2201 | 16년 전 | 1848 | ||
| 2200 | 16년 전 | 1601 | ||
| 2199 |
|
16년 전 | 1862 | |
| 2198 |
태양의서쪽
|
16년 전 | 2658 | |
| 2197 |
태양의서쪽
|
16년 전 | 3033 | |
| 2196 |
태양의서쪽
|
17년 전 | 3233 | |
| 2195 | 17년 전 | 3334 | ||
| 2194 | 17년 전 | 1477 | ||
| 2193 |
letsgolee
|
17년 전 | 1431 | |
| 2192 | 17년 전 | 2261 | ||
| 2191 | 17년 전 | 1981 | ||
| 2190 |
|
17년 전 | 2294 | |
| 2189 | 17년 전 | 2814 | ||
| 2188 |
Sizkein
|
17년 전 | 3264 | |
| 2187 |
letsgolee
|
17년 전 | 2362 | |
| 2186 |
Sizkein
|
17년 전 | 1640 | |
| 2185 |
Sizkein
|
17년 전 | 3215 | |
| 2184 |
Sizkein
|
17년 전 | 3067 | |
| 2183 | 17년 전 | 3042 | ||
| 2182 | 17년 전 | 3924 | ||
| 2181 | 17년 전 | 2592 | ||
| 2180 |
|
17년 전 | 2414 | |
| 2179 | 17년 전 | 2656 | ||
| 2178 | 17년 전 | 2907 | ||
| 2177 | 17년 전 | 2621 | ||
| 2176 | 17년 전 | 1459 | ||
| 2175 | 17년 전 | 1902 | ||
| 2174 | 17년 전 | 1501 | ||
| 2173 |
|
17년 전 | 1927 | |
| 2172 | 17년 전 | 2529 | ||
| 2171 | 17년 전 | 8711 | ||
| 2170 | 17년 전 | 3166 | ||
| 2169 | 17년 전 | 4252 | ||
| 2168 |
|
17년 전 | 1995 | |
| 2167 | 17년 전 | 3664 | ||
| 2166 |
|
17년 전 | 1563 | |
| 2165 | 17년 전 | 1393 | ||
| 2164 | 17년 전 | 2331 | ||
| 2163 | 17년 전 | 1324 | ||
| 2162 | 17년 전 | 1646 | ||
| 2161 | 17년 전 | 1464 | ||
| 2160 | 17년 전 | 2533 | ||
| 2159 |
inxps
|
17년 전 | 1507 | |
| 2158 |
inxps
|
17년 전 | 1101 | |
| 2157 | 17년 전 | 1234 | ||
| 2156 | 17년 전 | 3116 | ||
| 2155 | 17년 전 | 2184 | ||
| 2154 | 17년 전 | 1984 | ||
| 2153 |
|
17년 전 | 1227 | |
| 2152 |
letsgolee
|
17년 전 | 2460 | |
| 2151 | 17년 전 | 1177 | ||
| 2150 |
아름다운세상
|
17년 전 | 1134 | |
| 2149 |
아름다운세상
|
17년 전 | 1381 | |
| 2148 |
아름다운세상
|
17년 전 | 2745 | |
| 2147 |
|
17년 전 | 2402 | |
| 2146 | 17년 전 | 2492 | ||
| 2145 | 17년 전 | 1192 | ||
| 2144 | 17년 전 | 1308 | ||
| 2143 | 17년 전 | 3256 | ||
| 2142 | 17년 전 | 2842 | ||
| 2141 | 17년 전 | 4114 | ||
| 2140 | 17년 전 | 2262 | ||
| 2139 | 17년 전 | 2351 | ||
| 2138 | 17년 전 | 1405 | ||
| 2137 | 17년 전 | 2519 | ||
| 2136 | 17년 전 | 2203 | ||
| 2135 | 17년 전 | 2963 | ||
| 2134 |
아름다운세상
|
17년 전 | 2473 | |
| 2133 |
Juinjang
|
17년 전 | 1638 | |
| 2132 | 17년 전 | 2436 | ||
| 2131 | 17년 전 | 1594 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기