머리속에 갑자기 방법이 떠올라 가장 많이 쓰이는 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 등으로 압축률 이리저리 틀리게 압축하거나 암호넣어 압축했을시에도 패턴이 일치될까요? 파일 헤더는 같으려나.....
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 1930 | 17년 전 | 3003 | ||
| 1929 | 17년 전 | 1879 | ||
| 1928 | 17년 전 | 3992 | ||
| 1927 | 17년 전 | 1409 | ||
| 1926 |
지엔소프트
|
17년 전 | 1126 | |
| 1925 |
보드타는찌니
|
17년 전 | 1243 | |
| 1924 |
choijinhee
|
17년 전 | 1126 | |
| 1923 | 17년 전 | 1388 | ||
| 1922 | 17년 전 | 1746 | ||
| 1921 | 17년 전 | 2337 | ||
| 1920 | 17년 전 | 2415 | ||
| 1919 | 17년 전 | 1419 | ||
| 1918 | 17년 전 | 1168 | ||
| 1917 | 17년 전 | 2437 | ||
| 1916 | 17년 전 | 2869 | ||
| 1915 |
|
17년 전 | 3234 | |
| 1914 | 17년 전 | 3172 | ||
| 1913 | 17년 전 | 2338 | ||
| 1912 | 17년 전 | 3754 | ||
| 1911 | 17년 전 | 3184 | ||
| 1910 | 17년 전 | 5506 | ||
| 1909 | 17년 전 | 2657 | ||
| 1908 | 17년 전 | 1860 | ||
| 1907 | 17년 전 | 1934 | ||
| 1906 | 17년 전 | 1776 | ||
| 1905 | 17년 전 | 1706 | ||
| 1904 | 17년 전 | 2769 | ||
| 1903 | 17년 전 | 1895 | ||
| 1902 | 17년 전 | 1581 | ||
| 1901 | 17년 전 | 2072 | ||
| 1900 |
stuartkim
|
17년 전 | 1137 | |
| 1899 | 17년 전 | 1667 | ||
| 1898 | 17년 전 | 2882 | ||
| 1897 | 17년 전 | 2126 | ||
| 1896 | 17년 전 | 1820 | ||
| 1895 | 17년 전 | 2036 | ||
| 1894 | 17년 전 | 1324 | ||
| 1893 | 17년 전 | 1716 | ||
| 1892 | 17년 전 | 1215 | ||
| 1891 | 17년 전 | 1776 | ||
| 1890 | 17년 전 | 1806 | ||
| 1889 | 17년 전 | 1041 | ||
| 1888 | 17년 전 | 3136 | ||
| 1887 | 17년 전 | 4316 | ||
| 1886 | 17년 전 | 2464 | ||
| 1885 | 17년 전 | 7475 | ||
| 1884 | 17년 전 | 3840 | ||
| 1883 | 17년 전 | 4171 | ||
| 1882 | 17년 전 | 2429 | ||
| 1881 | 17년 전 | 2888 | ||
| 1880 | 17년 전 | 3638 | ||
| 1879 | 17년 전 | 4006 | ||
| 1878 | 17년 전 | 3167 | ||
| 1877 | 17년 전 | 3149 | ||
| 1876 | 17년 전 | 3297 | ||
| 1875 | 17년 전 | 2463 | ||
| 1874 | 17년 전 | 2059 | ||
| 1873 | 17년 전 | 3110 | ||
| 1872 | 17년 전 | 3258 | ||
| 1871 | 17년 전 | 4611 | ||
| 1870 | 17년 전 | 1592 | ||
| 1869 | 17년 전 | 2617 | ||
| 1868 | 17년 전 | 2689 | ||
| 1867 | 17년 전 | 1901 | ||
| 1866 | 17년 전 | 2220 | ||
| 1865 | 17년 전 | 1837 | ||
| 1864 | 17년 전 | 2372 | ||
| 1863 | 17년 전 | 3777 | ||
| 1862 | 17년 전 | 3895 | ||
| 1861 | 17년 전 | 2083 | ||
| 1860 | 17년 전 | 1360 | ||
| 1859 | 17년 전 | 1497 | ||
| 1858 |
|
17년 전 | 1651 | |
| 1857 | 17년 전 | 1634 | ||
| 1856 |
보드타는찌니
|
17년 전 | 1397 | |
| 1855 | 17년 전 | 1543 | ||
| 1854 |
|
17년 전 | 1360 | |
| 1853 | 17년 전 | 1850 | ||
| 1852 | 17년 전 | 2749 | ||
| 1851 | 17년 전 | 1849 | ||
| 1850 |
|
17년 전 | 1403 | |
| 1849 |
|
17년 전 | 1690 | |
| 1848 |
|
17년 전 | 2329 | |
| 1847 | 17년 전 | 1945 | ||
| 1846 |
은사시나무
|
17년 전 | 1264 | |
| 1845 |
갈색야생마
|
17년 전 | 5905 | |
| 1844 |
갈색야생마
|
17년 전 | 3284 | |
| 1843 |
갈색야생마
|
17년 전 | 3178 | |
| 1842 |
갈색야생마
|
17년 전 | 2589 | |
| 1841 |
갈색야생마
|
17년 전 | 2771 | |
| 1840 |
갈색야생마
|
17년 전 | 2719 | |
| 1839 |
갈색야생마
|
17년 전 | 3226 | |
| 1838 |
갈색야생마
|
17년 전 | 2353 | |
| 1837 |
갈색야생마
|
17년 전 | 2471 | |
| 1836 |
갈색야생마
|
17년 전 | 2532 | |
| 1835 |
갈색야생마
|
17년 전 | 2526 | |
| 1834 |
갈색야생마
|
17년 전 | 2668 | |
| 1833 |
갈색야생마
|
17년 전 | 3188 | |
| 1832 |
갈색야생마
|
17년 전 | 2702 | |
| 1831 |
갈색야생마
|
17년 전 | 1427 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기