• 締切済み

phpファイルのダウンロードとセキュリティについて

altrnの回答

  • altrn
  • ベストアンサー率62% (10/16)
回答No.3

さきほど回答したものです。せっかくなので補足させてください。 (あと、ataru2さんはGDなどを使われているようで、先ほどの回答は少し「知ってるさそんなの」といったレベルのものだったかも知れません。失礼しました。) 基本的には、 「外部からアクセスされることのない(はずの)ファイルは.htaccessでdeny from allしておく」 の方針でいい(十分だ)と思います。ですので、設計段階からできるだけ、 「外部からアクセスするファイル」と「それ以外」を ディレクトリまたは拡張子で区別できるようにしておくと、.htaccessの設定が簡潔ですみます。 ですので、ここまでこだわる必要はないかと思いますが、 「わかりやすい・予想しやすい名前」を心配に思うのであれば、 その上位ディレクトリを、「予想しにくい名前」にしておけば十分かと思います。 some_password/mysql.iniといった形です。 ただこの場合は、mysql.iniファイルへのアクセスをdeny from allするか、.iniすべてをdenyするか、あるいはこれが入っているフォルダに.htaccessをおいてdenyするか、あるいは先ほどは書き漏らしましたが、最上位層に RewriteRule ^(アクセス禁止のディレクトリ) - [F,L] と書いた.htaccessをおいてdenyすれば十分以上だと思います。

関連するQ&A

  • PHPでファイルのダウンロードについて

    お世話になります。ダウンロードボタンを付けてファイルのダウンロードを行う処理で困った事になってます。 (DL.php) $file_name=htmlspecialchars(@$_POST['file_name']); $file_name=addslashes($file_name); mb_convert_variables("SJIS-WIN","EUC-JP",$file_name); $file_to=htmlspecialchars(@$_POST['file_to']); $file_to=addslashes(@$_POST['file_to']); header ("Content-Disposition: attachment; filename=".$file_name); header ("Content-type: application/octet-stream"); require_once("dl_config.php"); readfile ($data_pas.$file_to); dl_config.php <?PHP $data_pas="/data/"; ?> この状態でテキストファイルをダウンロードすると、DLしたファイルの中に不要な改行ファイルが挿入されています。 またrequire_once("dl_config.php");を削除し readfile ($data_pas.$file_to);を readfile ("/data/".$file_to);とすると、改行は入らなくて、正常なファイルがダウンロードされます。 よろしくお願いします。

    • 締切済み
    • PHP
  • ダウンロードしたらなぜかphpファイルに・・・

    サイトから、動画ファイルやrarファイルをダウンロードしようとしたら、 なぜか、別名のphpファイルがダウンロードされます。 どうしたらいいんでしょうか? そのサイトは以前から使っていてこんな事はなかったんですが・・・ お願いします。

  • php_value include_pathを無効

    php_value include_pathを、あるディレクトリ以下では、無効にしたいのですが、 どうすればよいでしょうか? ■前提 ・サイト全体は、「.htaccess」に「php_value include_path」を書いて制御 ■やりたいこと ・ある特定ディレクトリ「hoge」以下では、「php_value include_path」ではなく、 PHPに直接書いた「require_once './★★/●●';」を利用したい ・つまり、設定ファイル「.htaccess」に記述した中のある一部分(特定ディレクトリ以下)だけは、「PHPソースに記述」したincludeパスを使いたい ■試してみてダメだってこと ・「hoge」に「.htaccess」を設置し、空の「php_value include_path=""」と書いてみたけど、うまくいきませんでした

    • ベストアンサー
    • PHP
  • PHPファイル ダウンロード

    サイト上で楽譜をダウンロードしようとたら、PHPファイルというものになっていてダウンロードも印刷もできませんでした。 このような場合どうやったら印刷やダウンロードができるようになりますか? よろしくお願いします。

  • PHPでネット上のPDFファイルを保存

    どこかのサイト上で公開されているPDFファイルを、絶対パスで指定して、ローカルPCにダウンロードさせたいと思っています(ファイル名はダウンロード先のファイル名のまま保存)。 これがPHPのプログラムで可能ならば、ソース例をご提示いただきたく、お願いいたします。

    • 締切済み
    • PHP
  • PHPのinclude('ファイル名')で指定できてしまうのはなぜ?

    お世話になります。 Smartyでテンプレートを用いながらPHPで開発を行っております。 たとえば、あるファイルからSmarty.class.phpをincludeする時 にinclude('Smarty.class.php')でどうやらincludeできている ようなのですが、、なぜ!?なのでしょうか? イメージ的には、include('パス')もしくはphp.iniに設定されている ディレクトリ直下のファイルというイメージなのですが。。 php.iniをのぞいてみるとinclude_pathはコメントアウトされている のですが・・ 疑問です。 ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • phpファイルをダウンロードすることはできますか?

    相手のホームページに、phpと拡張子のつくファイルがあるのですが、 ダウンロードできません。どんな内容なのか見てみたいのですが無理 なのでしょうか?ご存知の方、教えてください。宜しくお願い致します。 ちなみに、iriaでダウンロードを試みたのですあエラーとなって ダウンロードできませんでした。

    • ベストアンサー
    • PHP
  • サーバにあるエクセルファイルをダウンロード

    サーバ内にあるエクセルファイルをダウンロード画面からsubmitして、ダウンロードしたいのですが、ダウンロードしたファイルの内容が文字化けします。またなぜかダウンロード画面のhtml内容が張り付いてたりします。 XML形式で保存したエクセルファイルは問題なく保存→表示できるのですがどうしたらいいのか原因がわかりません。 ダウンロードのソースは、以下のようになっています。 <?php $out_path = mb_convert_encoding($file_path,"SJIS","UTF-8"); $out_file_name = basename($out_path); $file_size = filesize($out_path); header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"" .     $out_file_name . "\""); header("Content-Length: ".$file_size); readfile($out_path); ?> ちなみに環境は以下のようになっています。 OS :XP 文字コード:UTF-8 framework :symfony 原因をご存知の方、ご教授よろしく御願いします。

    • 締切済み
    • PHP
  • YOUTUBE ダウンロード

    よろしくお願いいたいます。 OSX 10.6.7 safari5.0.5です。 通常YouTubeのDLは普通に構成ファイル一覧より行っていますが、たまに別ウインドウで、 「http://v10.lscache8.c.youtube.com/videoplayback?sparams・・・」が立ち上がり、flvファイルが再生されてしまいDL出来ないことが有ります。 その場合はDLサイトの力を拝借してDLしますが、なぜSAFARIでDL出来ない場合が有るのでしょうか?

    • ベストアンサー
    • Mac
  • PHP:wavファイルのダウンロード

    音楽ファイルを会員に配信するサイトを運営しています。 mp3は問題なくダウンロード・再生できるのですが、wavファイルはダウンロードしてもファイルが破壊されており、再生できません。 wavファイルのバイト数に変化はありませんでした。FTPからファイルをダウンロードすると正常に再生できるので、問題はウェブでのダウンロードをする過程にあることは分かっています。いろいろ調べているのですがそれ以降の原因が分からず困っています。 誰か原因をご存知の方、目星の付く方などおられましたら、ぜひ解答お願いいたします。 ファイルダウンロードには、以下のようなphp関数を使っています。 function download_file($path_file){ if (!file_exists($path_file)) { die("Error: No Such File."); } if (($content_length = filesize($path_file)) == 0) { die("Error: File size is 0.(".$path_file.")"); } if($_POST['sort'] == mp3){ header("Content-Type: audio/mpeg"); }elseif($_POST['sort'] == wav){ header("Content-Type: audio/x-wav"); } header("Content-Disposition: attachment; filename=\"" .basename($path_file)."\""); header("Content-Length: ".$content_length); header("Content-Transfer-Encoding: binary"); $handle = fopen($path_file, 'rb'); while (!feof($handle)) { echo fread($handle, 4096); ob_flush(); flush(); } fclose($handle); }

    • 締切済み
    • PHP