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

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

ただいまの
回答率

90.35%

  • データベース

    901questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

  • SQLite

    833questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

  • セキュリティー

    555questions

    このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

【SQLite3】dbファイルのセキュリティ

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 5,605

nnahito

score 1812

 行いたいこと

SQLite3で作成した*.dbファイルに外部からアクセスできなくしたい。

 行ったことなど

Webでデータ集計などをしているのですが、
そのデータを一般ユーザが変更するときにパスワードやメールアドレスを入力し、
ログインを行ってから編集が可能になります。

そのパスワードやメールアドレスの参照を、SQLite + PHPで行っているのですが、
アドレス欄に「hoge.db」のように、ファイルパスを入力すると
普通にダウンロードができてしまいます。

流石にこれではまずいと、いろいろ対策を考えたのですが、
今私の知識では$ chmod 660 hoge.dbくらいしか思いつかず、
それをしてしまうと、そもそもにPHPなどからアクセスができなくなってします。

これはどのようにすれば良いのでしょうか?
対策法などご存じの方がいらっしゃいましたらご教授願います。

よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2015/12/19 09:02

    質問の本質とは異なるのでここに記載しますが、chmod 660 hoge.db を行ってPHP(webサーバプロセス)がアクセスできなくなるということは、hoge.db の owner設定を誤っているのではないでしょうか?

    キャンセル

  • nnahito

    2015/12/20 22:46

    ご指摘ありがとうございます。
    ぜひとも回答欄でお話させていただきたいと思いますが、
    owner設定とはどのように行うのでしょうか?

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2015/12/25 12:52 編集

    ownerの変更はchownコマンドになります。///tanatさんの回答中にもあるとおり、PHPはapacheの権限(おそらくユーザ名はhttpdでしょうか)で動作します。chmod 660 hoge.db とした場合でも、hoge.dbのowner, groupメンバであればアクセスできます(権限が0なのはotherだけ。所有者グループメンバは6なので読み書き可能)。したがって、hoge.dbのowner(ls -lコマンドで見られます)が正しくhttpdユーザになっていれば、前述chmodコマンド後でもapache(PHP)からは特に問題なく参照できるはずです。

    キャンセル

回答 2

+2

単に公開されていないディレクトリに置けばいいだけでは?

というか公開している場所にデータベースファイルを置くとかありえませんよ
大阪・堺市 全有権者の個人情報が流出みたいなことになる前に気がついてよかったですね

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/18 13:11

    ご回答有り難うございます。

    その事件を知って、質問させていただきました。
    公開されていないディレクトリ……どこだ!?
    まだ、この作っている物はテスト段階ですので、全然大丈夫ですが、
    公開するときに怖いので……

    キャンセル

checkベストアンサー

+1

一般的にはドキュメントルートより上のディレクトリにDBファイルを置いてブラウザからアクセス出来ないようにします。

そのあたりが今一つわからなければ(最終的には必ず理解する必要がありますが)、
.htaccessで以下の様に指定して.
dbのファイルにブラウザからアクセス出来ないようにする方法もあります。

<Files ~ "\.(db)$">
deny from all
< /Files>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/18 13:17

    ご回答有り難うございます。

    >一般的にはドキュメントルートより上のディレクトリにDBファイルを置いてブラウザからアクセス出来ないようにします。
    なるほど、みなさまそういうことをしているのですね……


    >そのあたりが今一つわからなければ(最終的には必ず理解する必要がありますが)
    ぜひ理解したいので詳細をお願いします。

    例えば、MacのApacheですと(場所を失念しましたが)「It works」のHTMLファイルがある場所、
    また、設定していればSitesフォルダの中は公開対象となります。

    この場合ですと、It worksのフォルダの外、または、Sitesの外に置くことになると想うのですが、
    PHPでそれらにアクセスすることはできないと思います。
    その辺りはどのように行うのでしょうか?

    キャンセル

  • 2015/12/18 13:30

    >この場合ですと、It worksのフォルダの外、または、Sitesの外に置くことになると想うのですが、
    >PHPでそれらにアクセスすることはできないと思います。
    そんなことは無いはずです。PHPはapacheの権限で動くので、apacheがアクセスできるファイルならどこにあってもPHPからアクセス可能です。

    キャンセル

  • 2015/12/20 22:51

    ご回答有り難うございます。
    レンタルサーバで、wwwフォルダ(Webサイトのルート)の外にdbファイルをおいて、PHPでアクセスしてもきちんと表示されました。
    ありがとうございます

    キャンセル

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • データベース

    901questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

  • SQLite

    833questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

  • セキュリティー

    555questions

    このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。