アンダースコアを使用してログから変数を非表示にする ... ほぼ動作します最近の JMP サミットで、私はデータベースへの資格情報を含む変数を非表示にする方法について開発者に尋ねました。 私の現在の解決策は 80% 進んでいます。 暗号化されたスクリプトの変数に資格情報を設定し、そのスクリプトを Include() して、データベースに接続するスクリプトでその変数を使用します。 メイン スクリプトを開いた人は誰でも、ログ ファイルに移動して変数を検索することで資格情報を確認できます。 JSL 開発者はサミットで需要があり、私が話をした他の人たちは変数を非表示にする方法がわかりませんでした。
それから私はこれを見ました:暗号化とグローバル変数 (jmp.com)
変数の前に 2 つのアンダースコアを置くだけで、それらはほとんど非表示になります。 Show ( __myVar)、Print ( __myVar)、または Write ( __myVar) を試行すると、結果は空白になります。 素晴らしい! しかし、__myVar をログに直接入力するだけで、ログがそれを定義してくれることがわかりました。 実際、これは変数を表示する最も簡単な方法の 1 つです...
意図せぬ抜け穴のようです。 二重アンダースコアはこれらすべてのスクリプト メソッドを停止し、スクリプト内の変数名の上にマウスを移動しても内容は表示されません。 しかし、変数を直接入力するだけで内容を表示する本当に明白な方法があります。
メイン スクリプトを暗号化せず、接続文字列のみを暗号化するのには十分な理由があります。 これがウィッシュリストの商品なのか、それとも何かが足りないのかわかりません。
自動化とスクリプト作成Re: アンダースコアを使用してログから変数を非表示にする ... ほぼ動作します上で述べた私の「JMP と Oracle ...」の話を見ていただければ、これが私が行っていることです。
- データベース接続を返す暗号化された関数を作成します。
関数の最後は次のとおりです。
my_dbc = create database connection(dsn_string);
// Return the connection to Oracle
my_dbc;
Re: アンダースコアを使用してログから変数を非表示にする ... ほぼ動作しますどうやら、デバッガーではすべての「隠し」変数も表示できるようです。

Re: アンダースコアを使用してログから変数を非表示にする ... ほぼ動作しますありがとう! これで 99% は達成できると思います。 変数の問題をうまく解決します。 1% は、Include() コマンドの実行時に資格情報を確認できることです。 スクリプトを見れば誰でも Include(db_credentials) のような内容を確認し、その行を実行してログ ファイルを確認できます。
私にとっては次のようになります。
Include("DSN encrypted function.jsl");
//Log file shows:
//:*/
Include("DSN encrypted function.jsl");
/*:
Function( {},
{Default Local},
dsn_string = "DSN=myDSN;UID=" || "uname" || ";PWD=" || "pwd" || ";";
my_dbc = Create Database Connection( dsn_string );
my_dbc;
)また、2 つのアンダースコア手法に関する私の質問の部分にも言及していません。 変数を部分的に隠すだけなら、なぜそれがあるのでしょうか? セキュリティのためですか、それとも他の目的ですか?
Re: アンダースコアを使用してログから変数を非表示にする ... ほぼ動作します実際、これで 100% 目的地に到達できます。 Include では、ログ内で最後に実行した内容のみが表示されるのではないかと思いつきました。 Print("This is the last thing") を追加しましたが、関数定義が表示されなくなりました。
ありがとう!
Re: アンダースコアを使用してログから変数を非表示にする ... ほぼ動作します次のいずれかを行う必要があると思います。
- 暗号化された関数を作成して、関数内に接続文字列を含むクエリを実行します (接続文字列を返さない)
- 暗号化された関数を作成します。開くデータベース接続 (これを使用する場合、New SQL Query() は使用できません)これは、JMP でデータクエリを実行するために推奨される方法です)
- Windows 認証情報マネージャーなどを使用する
JMP スクリプトには DSN パラメータが埋め込まれています。なぜ??
JSL (ODBC 接続文字列) でユーザーのパスワード情報を処理する方法
JMP と Oracle: 幸せな結婚のためのヒントとコツ (2022-US-30MP-1093)
Re: アンダースコアを使用してログから変数を非表示にする ... ほぼ動作します私は機密変数を使用した後に Empty() として再定義しているので、誰かが変数名を取得したとしても、変数には情報が含まれません。
Re: ログから変数をアンダースコアで隠す...ほぼ動作します</CODE></PRE>
<P>素晴らしいアイデアですね!<BR />この推薦を見つけたのは<BR /><A href="https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/work-with-expressions-in-an-encrypted-script.shtml#" target="_blank" rel="noopener noreferrer">https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/work-with-expressions-in-an-encrypted-script.shtml#</A></P>
<PRE><CODE class=" language-jsl">

</CODE></PRE>
<P>一方、 <A href="https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/encryption-and-global-variables.shtml" target="_blank" rel="noopener noreferrer">https://www.jmp.com/support/help/en/19.0/?os=win</A> &source=application#page/jmp/encryption-and-global-variables.shtml は、戦略というよりは警告です。</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_1-1763829135582.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_1-1763829135582.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/87531iDDA2ACB34BC016E4/hogi_1-1763829135582.png" role="button" title="hogi_1-1763829135582.png" alt="hogi_1-1763829135582.png" /></span></SPAN></P>
<PRE><CODE class=" language-jsl">
</CODE></PRE>
<BR />
<PRE><CODE class=" language-jsl"><BR /><BR />Names default to here(1);
__Hello=1;
Show(__Hello);
Show(Char(__Hello));
new namespace("__Test");
__Test:Hello=1;
Show(__Test);
Show namespaces();
暗号化も同様です:
//-e12.1
0,
344,4353eJwNzdmRhSAQAMB8NoWRc0AERu5DzT+Qff9d1QFHqsV6JkdVotYlkkDhRd03clZQQT4lY/V9by5qQPZ9+cMUryFddMeUzS/o
xBrLU9Be+4jFDalbz/jcKoH6mKax/aHIcsukQunhCmoHGbPI3PlbvwfT9ime6fmsTLNx7dCG3WexZhOfUzvj9U3itCUnjnbdv3yj
AaaaOb9Y+hhpa97cISVRJJVBVNCklH+vNc37BuxS3iv9QMQa4/lOEyo3hZ56pN5qBk8XfRSHcw3c5vwEgG20xmhAQ+w2zYhIk6+k
SDhYpzxVziJBoDwOpTSXHKXq2e3o1hnd+PsHyKdkiw==
,0,
Show(__Hello);
Show(Char(__Hello));
Show Namespaces()
...すべての定義に引き続きアクセスできます。