Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )암호와 사용자 ID를 사용자의 문서 폴더에 있는 별도의 파일에 넣고 싶습니다. 이 같은:
자격 증명.jsl
{"fred","1234"}
원하는 경우 암호화할 수 있지만 개가 보지 못하도록 하는 것 외에는 의미가 없습니다...
응용 프로그램에서 사용
{username,password} = include("$documents/credentials.jsl");
... use the credentials ...
username = .; password = .; // clear the variables when done with them
include 함수는 2개 요소 목록을 구성한 파일에서 실행된 마지막 문의 결과를 반환합니다.
나는 주로 소스 제어 시스템에 내 자신의 자격 증명을 체크인하지 않도록 하기 위해 이 작업을 수행합니다. 파일이 프로젝트 디렉토리 외부에 있기 때문에 실수로 선택되지 않습니다. 내 컴퓨터를 해킹하는 사람이 JMP를 가지고 있지 않기를 바라며 암호화합니다. 필요한 앱, 자격 증명이 적용되는 서비스 등 파일 이름에 약간의 정보를 추가할 수 있습니다.
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )이 정보를 일반 텍스트로 갖는 것보다 파일을 암호화하는 것이 더 나을 것이라고 생각합니다.
매우 간단한 암호화/암호 해독 단계를 포함하여 완전한 답은 무엇입니까?
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )위의 내 의견을 참조하십시오. 이것은 안전하지 않습니다. 그러나 공격자의 경로에 작은 과속 방지턱을 설치하는 방법은 다음과 같습니다.
encrypt() 함수로 이 파일을 암호화한 다음 암호화된 파일을 실행합니다.
// Pre-encrypt this using edit->encrypt script. There
// is no need to use a run password, and no reason to
// make a complicated edit password. "a" is good enough.
//
// Caution: this is not secure. No password is needed to
// view this data, though JMP is required to decrypt it.
// If you need a decrypt password+prompt, you'll need to
// manually go through the GUI for encrypting scripts.
// https://community.jmp.com/t5/Discussions/How-to-handle-user-password-information-in-JSL-ODBC-connection/m-p/627942#M82631
encrypt = Function( {name, pass}, {x},
x = Expr( 1 + 1 ); // throw an error if not working
// https://community.jmp.com/t5/Discussions/How-to-check-if-the-running-script-is-encrypted/m-p/624766#M82350
If( Char( Name Expr( x ) ) == "1 + 1",
Throw( "the encrypt function needs to be encrypted to work correctly." )
);
// strings generally stay unencrypted. expressions
// that are not simple strings or numbers try to stay
// encrypted. The concatenation operator is enough to
// keep the expression's strings encrypted.
Char( Eval Expr( {Expr( name ) || "", Expr( pass ) || ""} ) ); // return value
);
그런 다음 이것을 실행하여 어떻게 작동하는지 확인하십시오.
// use the encrypted encrypt function to make an encrypted list
name = "fred";
pass = "1234";
crypt = encrypt( name, pass );
If( length(crypt) < 500 + Length( pass ) + Length( name ),
Throw( "not encrypted. Did you execute the *encrypted* file containing the encrypt function?" )
);
file = Save Text File( "$temp/credentials.jsl", crypt );
name = .;
pass = .;
///////////////////////////////////////////////////
{name, pass} = Eval List( Parse( Load Text File( file ) ) );
write("\!nsaved file contains\!n",Load Text File( file ),"\!n\!ndecrypted is");
show(name,pass);
저장된 파일 포함
{JSL 암호화됨("//-e12.1\!r\!n0,\!r\!n208,4193eJwNytmBhSAMAMB+tgWCCRBUkMuLgP0X8na+B3NI2evLjsG330/RUttTTEpOYhEyJ7JlBa2j1uAnpks3G3wTgpF7tJ8jqYrL\! r\!nPvBetVXPxNjKIWh06B9i+P/zfrd+bo6IP7eUOA3kSsGoaGA1x0ovXovyGmy481u4wqIGYKnEhvuG6XAE4Qk19cmunKo32uGJkuTv\!r\!nB +khNtw=\!r\!n,0,"), JSL 암호화("//-e12.1\!r\!n0,\!r\!n208,4193eJwNzIkBxBAQAMB+rgWE9R1hQ/z0X8jdFDAcfUTDilxLV+PeyWbK7YEYHKE3A1bfMa7gUzjO2CxkyPw sVDPxS0TN9WNptpRC\!r\ !nLxnShipDYKmeKzWIoUTSF6XX/fjReuqKrYKwJ9yptTwR2DfaI2j/AlFVHd/bP3Mqa0cFcuV1KCuTGp9XmOmvrXe9+Dai8GNZN+Hz\!r\!nAxwZN40=\!r\!n,0,")}
해독은
이름 = "프레드";
패스 = "1234";
JMP에는 프로그래밍 방식으로 스크립트를 암호화하는 기능이 없으며 대화형 GUI만 있습니다. 이 해결 방법은 실행 또는 편집 암호 지정을 허용하지 않습니다. 실행 암호가 없으며(누구나 실행할 수 있음) 편집 암호를 알 수 없습니다. 다음과 같은 다른 솔루션을 선호할 수 있습니다. {"프레드","1234"} 편집 창에서 저장하기 전에 사용자가 수동으로 암호화하도록 합니다. 그런 다음 사용자는 좀 더 안전한 실행 암호에 대한 프롬프트를 원하는지 결정할 수 있습니다.
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )Windows에서는 자격 증명 관리자를 사용하고 싶습니다.
Windows의 PowerShell을 통해 Credential Manager에서 자격 증명 설정 및 가져오기
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )이 Discovery Summit 토크에서 암호화된 자격 증명을 사용하는 접근 방식을 설명합니다.
https://community.jmp.com/t5/Discovery-Summit-Americas-2022/JMP-and-Oracle-Tips-and-Tricks-for-a-Happy-Marriage-2022-US-30MP/ta-p/ 505583
"암호 숨기기" 섹션을 찾습니다.
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )이것을 데이터베이스 중 하나로 받아들인 것은 Oracle이었습니다. 자세한 튜토리얼에 감사드립니다.
JSL에서 사용자 비밀번호 정보를 처리하는 방법(ODBC 연결 문자열)해당 목적으로 생성된 특정 사용자 및 암호가 있는 ODBC를 사용하여 데이터베이스에 연결하고 있습니다(Windows Active Directory 등을 사용할 수 없음).
쿼리가 작성되면 테이블 스크립트는 사용자 ID를 저장합니다.
비밀번호를 요청하지만 JSL의 연결 문자열에 직접 코딩할 수도 있습니다.
JSL에서 이러한 상황을 처리하는 가장 좋은 옵션은 무엇입니까?
JMP 파일을 공유할 수 있지만 업데이트를 처음 실행할 때 특정 사용자와 암호를 묻는 메시지가 표시되어야 합니다.
자동화 및 스크립팅데이터 접근Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법( ODBC 연결 문자열 )2018년 이 토론에서 비슷한 접근 방식을 찾았습니다.
로그인 프롬프트로 데이터베이스 연결
데이터베이스에 연결하기 위해 코드를 암호화하면 어떤 이점이 있습니까?
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법(ODBC 연결 문자열)데이터베이스 연결을 열기 위해 실행할 수 있는 JSL 코드가 있는 경우 이 코드를 가진 모든 사용자(암호화 여부와 관계없음)는 데이터베이스에 액세스할 수 있습니다.
따라서 설정하는 것이 중요합니다. 비밀번호 실행 사용자가 허가 없이 스니펫을 사용하는 것을 방지하려면?
반면에 실행 비밀번호를 사용하면 코드를 자동으로 사용하는 것이 상당히 불편해집니다.
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법(ODBC 연결 문자열)모든 사람이 사용해서는 안 되는 코드를 공유하지 말라고 말하고 싶습니다(실행 비밀번호를 설정하고 싶지 않은 경우). 특정 사용자를 생성하는 것도 도움이 될 수 있으며(적어도 더 쉽게 비밀번호를 변경하거나 해당 사용자를 비활성화할 수 있음) IT를 온보드하여 누가 어떤 쿼리를 수행하고 있는지 확인하고 그에 따라 조치를 취할 수 있습니다.
또한 자격 증명 관리자(Windows의 경우)를 사용하여 다음과 같은 비밀번호를 관리할 수 있습니다. @ih 제안했습니다 (그래서 jsl 파일에 저장할 필요가 없습니다). 저는 (아직) JMP와 함께 자격 증명 관리자를 사용하지 않았지만 RPA(로봇 프로세스 자동화)를 구축할 때 사용했는데 훌륭하게 작동했습니다.
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법(ODBC 연결 문자열)이것이 제가 Windows 자격 증명 저장소를 사용하는 것을 좋아하는 이유 중 하나입니다. 다른 사용자는 비밀번호를 사용할 수 없습니다.해당 자격 증명이 포함된 코드나 파일을 선택된 사람만 액세스할 수 있는 장소에 저장하면 비슷한 효과가 있을 수 있습니다.
Re: JSL에서 사용자 비밀번호 정보를 처리하는 방법(ODBC 연결 문자열)이건 어때:
Windows AD 권한을 사용하여 데이터베이스 액세스를 제어합니다.
- 데이터베이스에 대한 액세스 권한을 포함하여 데이터베이스에 액세스하기 위한 스크립트 생성
- 사용자가 일반 텍스트로 된 비밀번호를 볼 수 없도록 JMP에서 파일을 암호화합니다.
- 스크립트 내에서 AD 액세스 권한이 있는 네트워크 공유의 파일에 액세스해 보십시오.
사용자가 파일에 액세스할 수 있으면 데이터베이스 액세스를 사용할 수 있습니다.
액세스 권한이 없는 사용자의 경우 스크립트는 오류 메시지만 표시합니다.
queryDB = Function( {SQLString},
pwd = Load Text File( "network path with AD rights" );
If( pwd = "my secret password",
result = New SQL Query(
Connection( "ODBC:DSN=database;PWD=xxx" ),
QueryName( "new" ),
CustomSQL( SQLString )
),
Caption( "no access rights" )
)
)