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

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

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

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

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

受付中

pythonで、postgreSQLにアクセスするパスワードをバレないようにしたい

stakezo
stakezo

総合スコア37

phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

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

3回答

0リアクション

1クリップ

375閲覧

投稿2022/10/06 06:08

編集2022/10/07 10:42

前提

よろしくお願いします。
質問の内容は「パスワードが、ばれないようにできないか」です。

私は、exe化したpythonアプリと、phpのWebページを用いて

[pythonのexe化アプリ] <--> [サーバ(postgreSQL含む)] <--> [Webページ(php)]

このように、連携させたいと思っています。
python側も、php側も、同じPostgreSQLのサーバにアクセスします。

このうち、php側からSQLサーバにアクセスするときは、phpのソース内にSQLのパスワードを入れるので、ユーザにパスワードがバレることは無いと思っているのですが、
exe化したpythonアプリ経由の場合は、以下の点で使用者の解析でパスワードがバレないかと心配しています。

問題におもっているところ

[1]・exe化したアプリをソースレベルに戻すツールの使用
[2]・ネットワーク信号の傍受
[3]・jsonを使っても[1][2]に効果はない?

[1] は、解析を難しくするツールを入れて解決できると思っています。

[2] が、不安に思っています。知識がないもので、単純に、平文でサーバーにアクセスすると盗まるのかな、と思っています。
普通プログラミングでパスワードを入れる時、どうするんでしょうか?、C/C++ のようなコンパイルしたexeは、バイナリエディタとかで見るとパスワードは見れちゃった経験があるので、考えが浮かばず困っています。

[3]のjsonが解決法かと思ったのですが、ソース内自体には無くてもexe化した[1]には結局情報が入っているだろうし、[2]のネットワーク信号にはパスワードが平文で乗る気がします。

ソースの例

connector =
psycopg2.connect('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
user = "postgres", #ユーザ
password = "pass123", #パスワード
host = 123.45.67.89
port = "5432", #ポート
dbname = "dbhoge") #データベース名
)

このようなパスワードがわからないようにするには、どのようなテクニックを皆さん使われているのでしょうか?ご教授よろしくお願いします!

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
==2022/10/07 16:45:22 追記=======================
私の返信が、回答者様へ通知がいかない方法でした。無反応のようになってしまい申し訳ありません。

stakezo 2022/10/06 16:53
たくさんの回答ありがとうございます。現在回答を元に調べている段階です。
プログラム内に、パスワードを入れることは不正解である。ということに気づかせていただきました。

次に、するべきは、「インターネットに対して待ち受けるような形でDBサーバを立てる」を辞める
「インターネットに対して」というのは、
ユーザーPCから、グローバルネットワークを通じて、サーバのデータベースにアクセス、これがダメだ、ということでしょうか。

~予想~
まだ、調べている段階なのですが、
ユーザPCのPythonプログラムが、サーバのPythonとかの待ち受けのプログラムと連携して、そのプログラムがローカル内のpostgreSQL にアクセスする、とかそんな感じなのかな。 もしかしたらそれがWebAPIなのかな。

と考えながら現在調べています。
======================================

この返信のあと、exe内にパスワードを入れない方向でずっと考え
「WebAPI、これは勉強しなければ」と課題にしました。そして今の技術でできる
「phpで、問い合わせるWebページをつくり、結果を受け取る」を作っている最中です。

pythonのexe化アプリから、

https://aaa.com/bbb?hoge=123456789&fuga=f034je9jD93j . . .

このような感じで問い合わせ、URLのphpが、データベースにアクセス。結果をpythonのexe化アプリが受け取る。
(※postgreSQL と、 php は同じサーバです)
という構想で作っています。これだと、データベースのアクセスがサーバ内で完結してるからセキュリティ的に大丈夫だと思っています。

もし、回答者様がまだこの質問を気にかけてくださって、ここに気づいてくださるなら、これは一般的なのか、もっと良いやり方があるのか教えていただきたいです。
よろしくお願いします。

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

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

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

適切な質問に修正を依頼しましょう。

stakezo

2022/10/06 07:53 編集

たくさんの回答ありがとうございます。現在回答を元に調べている段階です。 プログラム内に、パスワードを入れることは不正解である。ということに気づかせていただきました。 次に、するべきは、「インターネットに対して待ち受けるような形でDBサーバを立てる」を辞める 「インターネットに対して」というのは、 ユーザーPCから、グローバルネットワークを通じて、サーバのデータベースにアクセス、これがダメだ、ということでしょうか。 ~予想~ まだ、調べている段階なのですが、 ユーザPCのPythonプログラムが、サーバのPythonとかの待ち受けのプログラムと連携して、そのプログラムがローカル内のpostgreSQL にアクセスする、とかそんな感じなのかな。 もしかしたらそれがWebAPIなのかな。 と考えながら現在調べています。
m.ts10806

2022/10/06 19:40

回答していたとしても、こちらへのコメントではこちらにコメントや修正依頼をしてないと通知が来ないようなので(不便・・) 質問を編集して追記してください。
stakezo

2022/10/07 07:42

申し訳ありませんでした! 今後回答者様への通知を考え気をつけます!

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

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