5

API とやり取りする Python スクリプトがあります。スクリプトは PHP ページから開始されます。両方のスクリプトを作成したので、必要に応じていずれかのコードを変更できます。

Python スクリプトには、API とのインターフェイスとしてユーザー名とパスワードが必要です。私の最初の傾向は、それらを CLI 引数として Python に渡すことです。

<?php
exec('python someScript.py AzureDiamond hunter2');
?>

ただし、誰でも次の方法で資格情報を確認できますps

$ ps | grep someScript
1000     23295  2.0  0.2 116852  9252 pts/0    S+   15:47   0:00 python someScript.py AzureDiamond hunter2

私が検討している代替手段は、データをテキスト ファイルまたは sqlite データベースに書き込んでから削除することです。より良いアイデアはありますか?sqlite アプローチの制約は、移植性の高い方法 (phpFox プラグイン) で実行する必要があり、ほとんどの低予算の Web ホストはこのsqlite3モジュールをサポートしていないことです。

4

4 に答える 4

1

PHPで設定し、Pythonスクリプトで読み取った環境変数を使用できます。

于 2013-01-25T14:00:58.343 に答える
1

Pythonプロセスでstdinを使用してパラメーターを読み取り、phpから次のようにプロセスを開くことができます。

<?php
$handle = popen("/bin/python /var/www/someScript.py", "w");
// write username and password to $handle (e.g. newline separated)
?>

これが同じユーザーとして実行されている他のプロセスに対してどれほど安全かはわかりませんが(/ proc / nn / fd / 0からハイジャックされた可能性はありますか?)、プロセスリストを見るよりも確かに難しくなります。

于 2013-01-26T13:43:34.693 に答える
1

提案された方法は、発生するのを待っているセキュリティ上の問題です。MyProxy は、秘密鍵または証明書を安全に処理する方法です。MyProxy は必要な特定のソリューションではないかもしれませんが、これらのタイプのソリューションを検討する必要があります。

http://grid.ncsa.illinois.edu/myproxy/

于 2013-01-26T05:07:39.707 に答える
0

この問題を別の角度から見ると、exec() に渡されるプレーン文字を非表示にすれば解決する可能性があります。暗号化ライブラリを使用して、送信者からプレーンテキストを隠し、受信者で復号化することを検討しましたか? ちょっとした考え。

于 2013-01-25T14:03:54.970 に答える