前提
よろしくお願いします。
質問の内容は「パスワードが、ばれないようにできないか」です。
私は、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 は同じサーバです)
という構想で作っています。これだと、データベースのアクセスがサーバ内で完結してるからセキュリティ的に大丈夫だと思っています。
もし、回答者様がまだこの質問を気にかけてくださって、ここに気づいてくださるなら、これは一般的なのか、もっと良いやり方があるのか教えていただきたいです。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー