質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4790閲覧

Apache アップロード 拡張子 ファイルの制限

daichanPS

総合スコア19

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/07/25 06:40

###前提・実現したいこと
現在Apache/PHPを活用して、ファイルのアップロードに挑戦しております。
実際に、ファイルの転送を行うことには成功しているのですが、どのようなファイルでも送信できてしまいます。

**.txtのみ送信**できるようにするにはどのようにすればよいのでしょうか。

(.txtファイル以外を送信しようとした場合はエラー表示をしようと考えております)

<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>アップロード</title> </head> <form method="post" action="./upload.php" enctype="multipart/form-data"> <input type="file" name="filename" size="60" /> <input type="submit" name="submit" value="送信" /> </form> </body> </html>

###発生している問題・エラーメッセージ

<Directory> Order deny,allow Deny from all allow from txt </Directory>

上記をhttpd.confの一番最後の行に記述した場合、AH00526:directive requires additional argumentsとエラーがでました。

ご教授よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

  • javascriptを使ってフォームの送信前にブラウザ側でチェックする
  • どんなファイルでも送信できるが、受け入れるかどうかをPHPで判断する

前者は容易に突破可能ですので、必ず後者の処理は必要です。ということで、基本的に「送信させない」ということはできないです。

送信してからエラーになるより事前にだめだと言われる方がユーザーには親切なことが多いです。前者はそういう意味のチェックになります。

Apacheの設定は何を参考にしたのかわかりませんが完全に間違っています。

投稿2017/07/25 07:05

suzukis

総合スコア1449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

html5でならaccept属性が利用できます。

ただ、HTMLは改ざん可能なので、今回であれば upload.phpで受け取った情報をバリデーションし、
txt以外の拡張子だった場合はエラーとするようなサーバー側でのチェックも入れておいたほうが
確実です。

追記:
拡張子を取得する際の参考先を幾つか貼っておきます。

拡張子が取得できたら許可したい拡張子ではないときにエラーメッセージを表示の処理を書くだけです。

投稿2017/07/25 06:50

編集2017/07/25 07:04
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/07/25 07:00

エラー表示をしたいならacceptを利用して選べなくするよりもphp側でチェックしたほうがいいですね。 回答に追記しておきます。
suzukis

2017/07/25 07:08

input要素のaccept属性は「デフォルトのファイルの選択条件」を提供するだけで、「選択できるファイルの制限」はできません。HTMLの改ざんなどせずともファイル選択のダイアログでフィルタは解除できます。
m.ts10806

2017/07/25 07:10

そうですね。 回答に追記はしましたが私もPHPでのチェックを必須と考えいます。
daichanPS

2017/07/25 08:08

コメントありがとうございます。初めてaccept属性を使ってみました。 suzukisさんの言う通りの結果となり、制限はできませんでしたが追加すべきものだと感じました。 これから、追記頂いた参考先から読み解いて挑戦していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問