すみません。unix系、php、web系 初心者です。
Mysql を利揺するのにpearで接続しています。
phpで記述している部分でdsnの部分がありますが
パスワードやユーザー名、サーバー名等が平文?そのまんま記述していますが危険ですよね?
そういうファイルは公開フォルダ( wwwやpublic_html )に置くべきでは無いですよね?
公開フォルダより上位に置いておけば安全ですか?(100%では無いと思いますが...)
公開フォルダと同じ並びに置く場合
その場合、パスの指定はどのように指定すれば良いでしょうか?
../../functions/
/functions/
のようでしょうか?
またrequire_onceで読めるでしょうか?
申し訳ありません...

今は以下の様にしています。
/www/functions/hogehoge.phpです

<?php
$functions_path = '../functions/';
set_include_path(get_include_path() . PATH_SEPARATOR . $functions_path);

require_once('hogehoge.php');

このQ&Aに関連する最新のQ&A

A 回答 (4件)

公開フォルダにおかざるを得なくて.htaccessも使えない場合の裏技


.htで始まるファイルはデフォルトで外部アクセス禁止になっていることが多いのでパスワードを書いたファイルの名前を
.htpass
とかにしておく方法もあります
サーバ内からは
require_once('.htpass');
で読めます
    • good
    • 0
この回答へのお礼

ありがとうございます
勉強になりました
使用しているサーバーでは禁止されているか確かめてみます。

お礼日時:2009/05/27 16:51

>ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。


>そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではな>いでしょうか?と思うのです...

要するに、例えば
http://www.example.com/something.php
----
<?
require_once('./function/function.php');
...
----

http://www.example.com/function/password.php
----
<?
$password = "hogehoge";
----

というファイルが置いてあって、外部から

<?
require("http://www.example.com/function/password.php");
echo $password . "\n";
?>

としたら、パスワードが見えてしまうのではないか?という事を気にしていますか?

somethings.php や password.php は HTMLの出力結果のみを
出力するので、こういった記述自体はおきませんが、
password.phpが、(apacheの設定ミスなどで)間違って平文で表示されてしまったら
確かにアウトです。ので、諸々考えるならば、やはり公開エリアにおかないのが
無難です。


>その場合、パスの指定はどのように指定すれば良いでしょうか?

>$functions_path = '../functions/';
>set_include_path(get_include_path() . PATH_SEPARATOR . $functions_path);
>require_once('hogehoge.php');



require_once('../functions/hogehoge.php');

でよいと思います。
    • good
    • 0

> 公開フォルダより上位に置いておけば安全ですか?



これがよいですが、

> /functions/

においておくのであれば、

/functions/index.html

というファイルを作っておいて(中身は空でよいです)下さい。

HTTPサーバーの設定で、ディレクトリの中が参照されるように
なっている可能性があるので。
    • good
    • 0
この回答へのお礼

ありがとうございます
そうですよね。index.htmlは入れてあります。
ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。
そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではないでしょうか?と思うのです...
間違っていたら申し訳ありません...

お礼日時:2009/05/27 16:49

万が一phpが実行形式でなくなった場合の措置であれば、


インクルードパスを公開フォルダ外におけば問題ないでしょう。
昔からCGIでcgi-binを使うのと同じような処理ですね。

実際にはクラスを使ってライブラリ化しておくと再利用性があがります。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2009/05/27 16:34

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q起動時ログインパスワード"なし"から"あり"に設定したい

vista使用しています。
PC起動時にアカウントからログインする際に、パスワードを求められますが、
今までパスワードは設定しておらず、enterでログインしていました。
今後、パスワードの設定が必要になったので設定しようと思い、
ctrl+alt+deleteでパスワードの設定画面に行き、
古いパスワードを入れるところに何も入れないで、新しいパスワードを入れたところ、エラーになってしまいました。
古いパスワードのところに何かしら入力しないとダメなのでしょうか?

それとも、パスワードなしでログインしていたのに今更パスワードは設定できないのでしょうか?
質問の仕方が解りにくいと思いますが、vista初心者のためよろしくお願いいたします。

Aベストアンサー

NO1追加
Vistaでログインパスワードを設定すると、忘れた場合にXPと違い、セーフモードのAdministratorユーザーからのパスワード解除は不可能ですから、ログオンパスワードを設定する際は「パスワードリセットディスク」をお忘れなく作成しておいて下さい。

「コントロールパネル」「ユーザーアカウントと家族のための安全設定」「ユーザーアカウント」左側「パスワードリセットディスクの作成」「パスワードディスクの作成ウィザードの開始」を起動
パスワードを入力してディスクを作成

「ログインパスワードの有効期限を伸ばす」
ログインパスワードはデフォルトで42日間の有効期限が設定されています。
http://vista.papepopc.com/2007/05/post_44.html

参考URL:http://pc.nikkeibp.co.jp/article/NPC/20071022/284896/

Qfile_exists('http://192.168.0.9/x.php');

が機能しません
file_exists('/var/www/html/x.php');
(FC4を使っている)

include('http://192.168.0.9/x.php');

機能します
どうしたら
file_exists('http://192.168.0.9/x.php');
も機能するようになるでしょうか?
file_existsの引数がURLのときにも機能するようにするにはどうすればよいのでしょうか?

Aベストアンサー

>どのラッパーが stat() ファミリーをサポートしているか
http://jp.php.net/manual/ja/wrappers.http.php
によるとHTTP プロトコルで stat( ) は、サポートしていないようです。
ファイルが存在するかどうかだけなら、fopen でオープンできるかどうかで代用できるような気がします。

Q共有しているフォルダーへのパスワード設定について

Win2000で、共有したいフォルダーを設定したところ。
Win98の他のパソコンから、win2000内の共有したフォルダーを見に行くと ネットワークパスワードを聞いて来ます。Win98では 共有の設定のところでフルアクセルの際パスワードによる区分を設定し、パスワードを設定できるのですが。
Win2000ではどのようにしてパスワードの設定もしくは、パスワードなしでの
フォルダーへのアクセルを可能にできるのですか。Win2000にバージョンアップ
したばかりです、申し訳ございませんが教えてください。

Aベストアンサー

ユーザーが設定されている場合は
コンピュータの管理→ローカルユーザーとグループ→ユーザー→右側のユーザー名を右クリック→パスワードの設定
ユーザーが設定されていない場合は
コンピュータの管理→ローカルユーザーとグループ→ユーザー→右側のGuestを右クリック→パスワードの設定
で設定出来ると思いますが…

Qphp.iniのinclude_path名の取得方法について

php.ini内で設定するinclude_pathの取得方法がありましたらどなたか教えてください。
よろしくお願いします σ(^_^)

Aベストアンサー

定義済み定数
DEFAULT_INCLUDE_PATH
で取得できますよ

参考URL:http://www.php.net/manual/ja/reserved.constants.core.php

Qvistaのパスワード設定

こんばんは

vistaのパスワード設定について教えてください
コントロールパネル

「ユーザーアカウント」

“変更するアカウント”を選ぶ所まではわかりました

アカウントを選び、パスワード設定画面になりますが
調べてみたら「パスワードを作成する」を選ぶ事が出来ません
新しいパスワードは設定していないため、新しいパスワードは
空欄で変更を押しますが変更されないです

パスワード設定するにはどうしたらいいでしょうか
申し訳ないですがご教授願います

Aベストアンサー

>調べてみたら「パスワードを作成する」を選ぶ事が出来ません
パスワードを設定していないユーザーIDであれば「パスワードの作成」を選択できます。
既にパスワードが設定されている場合は「パスワードの変更」と「パスワードの削除」が選べます。

>新しいパスワードは空欄で変更を押しますが変更されないです
「パスワードの変更」で新しいパスワードの欄に未入力で「変更」ボタンを押すと「パスワードの削除」と同じ動作になります。

自分でやりたいことを正しく表現できるようにして頂かないと今の状態が伝わりません。
従って、回答も目的にかなっているか否かが分かりません。
この回答で目的が達成できなければあなたが実行したこととその結果を補足して下さい。

Qphp_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=""」と書いてみたけど、うまくいきませんでした

Aベストアンサー

カレントの意味を誤解してる気がするんですが。
apache から呼び出された最初のファイル(たとえば /home/aaa/index.php)のある場所(/home/aaa)が、カレントで、そこから連鎖的に、次々異なるディレクトリーのファイルを読み込んだとしても、カレントは今読んでるファイルの場所ではなく、最初のファイルのある場所(/home/aaa)です。
include 先を ./ から記述すると include_path に関係なく、カレント=最初のファイルのある場所(/home/aaa)内でファイルを探します。
よって、連鎖して呼ばれたファイル(たとえば /home/ccc/xxx.php)からみた同じディレクトリーのファイル(たとえば /home/ccc/zzz.php)を呼び出したいなら

require_once( dirname(__FILE__).'/zzz.php' );

のようにして、絶対パスを作る方が、ファイル検索時間がかからない分、速いです。
.htaccessで指定するなら

php_value include_path="/home/ccc"

のように、その .htaccessが置いてあるディレクトリーの絶対パスのみを指定して
該当ディレクトリー内のファイルから呼び出すときは、先頭に ./ を付けないでファイル名またはサブディレクトリー名からのみ記述します。
require_once('zzz.php')

カレントの意味を誤解してる気がするんですが。
apache から呼び出された最初のファイル(たとえば /home/aaa/index.php)のある場所(/home/aaa)が、カレントで、そこから連鎖的に、次々異なるディレクトリーのファイルを読み込んだとしても、カレントは今読んでるファイルの場所ではなく、最初のファイルのある場所(/home/aaa)です。
include 先を ./ から記述すると include_path に関係なく、カレント=最初のファイルのある場所(/home/aaa)内でファイルを探します。
よって、連鎖して呼ばれたファイル(たとえば ...続きを読む

Qオグイン時のパスワードを設定したい。

会社のパソコンですが、私のIDでドメイン参加しています。
で、パスワード自体設定されていないので、
パスワードを設定しようと、
コントロールパネルのユーザーとパスワードからパスワードを変更しようとしました。
ところが同じWIN2000を使用している自宅のPCでは
「このユーザー名を使用するには、ユーザー名とパスワードを入力する必要があります」
というメッセージがでるのに、会社のPCではでません。
それからパスワードを設定しようとしても、
パスワードの設定自体ができません。

どうしてでしょうか?
御教授の程宜しくお願いします。

Aベストアンサー

会社のパソコンという事なので、おそらくあなた自身にAdministrstorの権限が与えられていないと思います、ですからパスワードの設定や変更は出来ない、ということではないでしょうか。セキュリティーの面からもシステム管理者の方にパスワードを設定してもらったほうがよろしいかと思います。

Q$str=preg_replace('/\u3000/','  ',$str);

によってutf-8の空白文字をhtmlの空白文字に変換しようとしたのですがエラーになります
どうしたらいいのでしょうか?

Aベストアンサー

>そもそも?のところにコード表現で空白文字を入力する手段はないのでしょうか?
\xE3\x80\x80
で一応いいかと思いますが…

Qパワーオンパスワードが設定不可PCへのパスワード設定方法

BIOSのパスワードを設定しましたがBIOS設定画面に入る時だけパスワードを求めるものでした。パワーオン時にパスワードを求めてくるような設定が出来るソフト等の方法があれば教えて下さい。

Aベストアンサー

質問者さんのご要望とは若干異なるかもしれませんが、
Windowsの起動ドライブを暗号化し、
電源ONによるWindows起動開始時(Bios起動直後)に
パスワードを求めてくるようなことができるソフトはあります。

参考URL:http://www.forest.impress.co.jp/article/2008/02/08/truecrypt5.html

Qphpのinclude_pathのエラーについて

phpで以下のエラーが出ております。
いろいろ試しているのですが、解決できません。
各種設定ファイルに設定の誤りがあるのでしたら教えていただきたいと思います。

1)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\aaa\ins.php on line 26
2)Fatal error: main(): Failed opening required '' (include_path='.;c:\php4\pear') in C:\Apache2\htdocs\aaa\ins.php on line 26

c:\php4\pearというディレクトリは存在しないがなぜか出る。

3)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26
4)Fatal error: main(): Failed opening required '' (include_path='.;C:\Apache2\htdocs\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26


##ins.phpのソース:
$tpl = "ccc.tpl";
require_once($tpl);

##ディレクトリ構成
C:\Apache2\htdocs\aaa
ins.php
ccc.tpl

##php.iniの設定:
---有効にした場合1)のメッセージ
include_path = ".;c:\php\includes" 
---コメントアウトした場合2)のメッセージ
;include_path = ".;c:\php\includes" 
---以下のpathにフォルダを作成してccc.tplを配置した場合3)のメッセージ
include_path = ".;c:\php\includes\aaa"
---以下のpathを指定した場合4)のメッセージ
include_path = ".;C:\Apache2\htdocs\aaa"


##httpd.confの設定:
line 231
DocumentRoot "C:/Apache2/htdocs"

line 256
<Directory "C:/Apache2/htdocs">
AllowOverride Options AuthConfig


##環境
os:winXP
apache2:apache_2.0.58
php:PHP Version 4.4.1

phpで以下のエラーが出ております。
いろいろ試しているのですが、解決できません。
各種設定ファイルに設定の誤りがあるのでしたら教えていただきたいと思います。

1)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\aaa\ins.php on line 26
2)Fatal error: main(): Failed opening required '' (include_path='.;c:\php4\pear') in C:\Apache2\htdocs\aaa\ins.php on line 26

c:\php4\pearというディレクトリは存在しないがなぜか出る。

...続きを読む

Aベストアンサー

>##ins.phpのソース:
>$tpl = "ccc.tpl";
>require_once($tpl);

ins.phpソースを以下のようにしてみて下さい。
$tpl = "./ccc.tpl";
require_once($tpl);


人気Q&Aランキング