[질문]확장자가 php 인 파일의 업로드 막는법을 알고 싶습니다.

ani1974의 이미지

ftp를 이용한 업로드는 물론 가능해야 하구요..^^;;;
제가 하고 싶은건 게시판이나 이미지 올리기 등에서 확장자가 php인 파일의 업로드를 서버 차원에서 막고 싶습니다.
프로그램 차원에서 막은다고는 하는데 버그가 있는듯 하내요...

서버차원에서 원천적으로 막는 방법은 없을까요?

kirrie의 이미지

서버 차원이라고 하면 어떤 서버를 말씀하시는지는 모르겠지만, 아마 있었다면 사람들이 그걸 사용했겠지요.

보통 업로드에서 php파일 등의 server-side script파일을 막는 이유는 업로드 된 스크립트를 외부에서 불법적으로 실행할 가능성이 있기 때문입니다. 이 경우 문제가 되는 스크립트 파일의 업로드를 해결하는 여러가지 방법이 있을 수 있습니다.

1. 파일 업로드를 막는 방법
1.1 자바스크립트로 막는 방법
관련 소스는 인터넷에 많이 돌아다닐껍니다. 자바스크립트로 파일의 확장자를 판독해내서 php파일이면 submit하지 못하게 합니다.
그러나 이건 매우 간단한 방법이고 얼마든지 뚫릴 수 있기 때문에 권장하지 않습니다.

1.2 php에서 막는 방법
이것도 동작은 위와 비슷합니다. 파일의 확장자를 비교해서 php이면 reject시킵니다.

2. 업로드된 php를 무효화시키기
만약 httpd.conf에 대한 접근권한이 있다면 directory directive를 이용해서 업로드된 파일이 저장되는 디렉토리의 php실행을 막습니다. 즉,

<directory "/full/path/to/data">
   AddType application/x-httpd-php-source .php
</directory>

등으로 해서 php 확장자는 무조건 php소스로 인식해서 그냥 화면에 뿌려주도록 하는 것이죠.

물론 이 경우엔 메인 addtype에 html등이 php실행소스로 지정되어 있지 않은지도 확인해야 합니다..

그 외에 특별한 경우가 아니라면 register_globals나 allow_url_fopen등의 설정을 off해줌으로써 좀 더 보안에 신경을 써줄수도 있습니다.

만약 위 설정들을 php.ini에서 off시켰는데, 특정 장소에서 필요하다면 간단하게 httpd.conf에서 directory directive를 이용해 php_flag_admin register_globals on (or allow_url_fopen on) 등으로 해주면 됩니다. (php_flag_admin인지 php_flag인지 잘 기억나지 않는데 버젼별로 좀 다르답니다.)

--->
데비안 & 우분투로 대동단결!

mykhs7200의 이미지

그거 막어도 다른 확장명을 올리면 말짱 꽝인데 어짜피 실행은 되거든요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.