스마트폰과 PC를 설정하는 방법. 정보 포털
  • 소식
  • 외부 처리의 소프트웨어 개방. 안전 모드

외부 처리의 소프트웨어 개방. 안전 모드

플랫폼 8.3.9.2033이 출시되면서 새로운 메커니즘이 나타났습니다. "위험한 행동으로부터 보호".

이 혁신 덕분에 1C는 이제 처리 시작 시 다음과 같이 맹세하기 시작했습니다.

보안 경고

"My_External_Processing.epf" 파일에서 "내 외부 처리"를 엽니다.

이 파일을 얻은 소스에 주의를 기울이는 것이 좋습니다. 추가 모듈 개발에 대해 소스와 합의가 없거나 파일 내용에 의문이 있는 경우 파일을 열지 않는 것이 좋습니다. 열면 컴퓨터와 데이터가 손상될 수 있습니다.

이 파일을 열도록 허용하시겠습니까?

그래서 1C는 악성코드에 맞서기로 결심했습니다!

이 "악성 코드"가 기업에서 어디에서 나올지는 여전히 미스터리입니다)

잠재적으로 위험한 행동은 다음과 같습니다.

  • 외부 보고서 로드, 처리 또는 구성 확장.
  • 구성/확장 로드 또는 업데이트.
  • 외부 보고서/프로세서에서 액세스하거나 다음 기능에 대한 확장:
  • 운영 체제 명령을 실행합니다.
  • 사용자 관리(정보베이스 사용자에 대한 정보 기록 또는 삭제)
  • 외부 처리(보고서) 관리자의 Connect() 메서드를 호출합니다.
  • ExtendConfiguration.Write() 메서드를 호출합니다.
  • COM 개체 작업.

이 “기적”을 어떻게 끌 수 있습니까?

이렇게 하려면 구성자 모드에서 1C Enterprise를 시작해야 합니다.
메뉴 "관리" - "사용자"를 선택합니다.
사용자를 위해 열리는 창에서 사용자 설정 창을 열고 "기본" 탭을 선택 취소해야 합니다. "위험한 행동으로부터 보호"

이를 비활성화하는 다른 방법이 있습니다:

이제 작업 시 위험한 작업에 대한 보호가 비활성화되는 정보베이스 목록을 지정할 수 있습니다.
이 함수는 conf.cfg 파일의 비활성화UnsafeActionProtection 매개변수를 담당합니다. 이를 통해 연결 문자열이 비활성화UnsafeActionProtection 매개변수에 지정된 마스크를 충족하는 특정 정보베이스의 모든 사용자에 대해 위험한 작업에 대한 보호 메커니즘을 비활성화할 수 있습니다.

이 매개변수에서는 ";" 기호로 구분된 여러 마스크를 지정할 수 있습니다.

비활성화UnsafeActionProtection=test_.*;stage_.*;

또한 위험한 사용자 작업에 대한 보호를 프로그래밍 방식으로 비활성화할 수 있으며 이에 대해 다음 매개변수 및 속성을 사용할 수 있습니다.

  • 외부 처리(보고서) 관리자의 Connect() 메소드의 위험한 동작으로부터 매개변수 보호
  • 이 개체의 Write() 메서드를 호출하기 전의 구성 확장 개체의 위험한 작업으로부터 보호 속성입니다.

위험한 행동에 대한 보호 기능 사용 필요성 확인은 다음 순서로 수행됩니다.

1. 현재 사용자의 "위험한 활동으로부터 보호" 확인란을 선택 취소하면 보호가 비활성화된 것으로 간주됩니다.

2. 정보베이스에 대한 연결 문자열이 conf.cfg 파일의 비활성화UnsafeActionProtection 매개변수에 지정된 패턴 중 하나를 충족하면 보호가 비활성화된 것으로 간주됩니다.

3. 외부 처리 또는 보고의 위험한 행위로부터 보호 매개변수를 사용하여 보호가 명시적으로 비활성화된 경우.

4. 위험한 작업으로부터 보호 확장 속성을 사용하여 보호가 명시적으로 비활성화된 경우.

“Trade Management 11.3”을 예로 들어 외부 인쇄 양식을 연결하는 간단한 프로세스를 고려해 보겠습니다. 또한 새로운 보안 시스템의 기능도 고려할 것입니다.

빠른 통과

예비 조치

먼저 당신은 기능 활성화또는 이용 가능 여부를 확인하세요.

1. 정보 데이터베이스에 대한 모든 권한으로 로그인합니다.

2. "마스터 데이터 및 관리" 메뉴/"관리" 차단/"인쇄된 양식, 보고서 및 처리" 명령으로 이동합니다.

덧셈

열리는 섹션에서:

"만들기" 버튼(중요) 또는 "업데이트!"를 사용하여 처리를 추가합니다. 기존의:

  • 목록에서 선택하십시오(선택하지 않았거나 비어 있으면 명령이 작동하지 않지만 아무 말도 하지 않습니다).
  • "파일에서 로드" 버튼을 클릭하세요.

외부 처리에 1C가 등장한 후 보안 검사가 새로운 구성으로 나타났습니다.

독립적으로 생성되었거나 알려진 통신 채널을 통해 수신된 처리만 설치해야 합니다(우편이 아닌 유효한 인증서가 있는 웹사이트에서만 제공되거나 개발자의 직원이 제공하고 전화로 확인함).

처리의 모든 것이 개발자에 의해 규정된 경우 "배치"가 설정됩니다. 즉, 처리가 포함될 개체, 명령이 나타납니다.
작업하려면 "저장 후 닫기"를 클릭하세요.

시험

그 직후에는 치료 유형에 따라 다음과 같습니다.

  • 인쇄된 양식은 문서를 열 때 또는 "인쇄" 버튼을 클릭하여 목록(이미 열려 있는 문서의 경우 다시 열 때)에서 사용할 수 있습니다.
  • 각 하위 시스템의 "추가 처리" 섹션에서 처리가 가능합니다.
  • 목록의 "채우기" 버튼이나 개체 양식의 기본 명령 패널을 사용하여 채우기를 처리합니다.

위 처리의 경우 실행은 다음과 같습니다.

문서가 새 문서인 경우 기록해야 합니다. 외부 처리 메커니즘에서 이에 대해 경고합니다.

추가 동작은 내장된 기능에 따라 달라집니다. 즉, 양식을 열거나 단순히 데이터를 처리하는 것이 가능합니다.

1C의 보안 경고

새로운 플랫폼 릴리스 및 구성은 악성 프로그램 실행에 대한 보호 기능을 강화했습니다.

처리를 수행하면 Excel이 로드되기 시작하며, 이 경우 새 보안 하위 시스템에서 다음과 같은 경고도 표시합니다.

이 경우 처리기 코드가 중단됩니다.

"예"를 클릭하면 시스템에서 명령을 다시 실행하라는 메시지를 표시합니다.

정보베이스 사용자는 "구성자"를 통해 위험한 행동으로부터 보호를 비활성화할 수 있습니다.

이는 "엔터프라이즈" 모드에서 변경할 수 없습니다. 이는 의도적으로 수행된 것일 수 있으며 업데이트 후에 나타날 수 있습니다.

또한 Excel을 사용하여 처리하는 경우 안전하지 않은 모드에서 실행해야 합니다(새 시스템이 도입되기 전의 경우였으며 병렬로 작동함).

"MS EXCEL을 로드할 수 없습니다!!!" “안전 모드가 설정되었습니다. 조작금지"

외부 처리에서는 다음과 같습니다.

개발자는 내부 처리 설명에서 이를 "False"로 설정해야 합니다. 그러면 모든 것이 정상이 됩니다.

함수 InformationOnExternalProcessing() 내보내기RegistrationParameters = 새 구조; 등록 매개변수.Insert("SafeMode", False);

구성을 업데이트할 때 구성 파일을 가져온 소스에 대한 경고 텍스트도 표시되었습니다.

인쇄(Ctrl+P)

구성 객체

서버에서 "신뢰할 수 없는" 프로그램 코드(외부 처리 또는 사용자가 Run() 및 Calculate() 메서드에 사용하기 위해 입력한 프로그램 코드)를 사용해야 하는 경우 안전 작동 모드를 사용할 수 있습니다.

안전 모드에서:

  • 특권 모드 취소 된.
  • 특권 모드로 전환 무시됨.
  • 금지 1C:Enterprise 플랫폼과 관련된 외부 수단의 사용으로 이어지는 작업(지정된 방법의 비차단 아날로그 포함):
  • COM 메커니즘:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • 외부 구성 요소 로드:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • 파일 시스템 액세스:
    • ValueInFile();
    • 파일 복사();
    • 파일 병합();
    • 파일이동();
    • 분할파일();
    • 디렉터리 생성();
    • 파일 삭제();
    • 새로운 파일;
    • 새로운 xBase;
    • 항목HTML.OpenFile();
    • 읽기HTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • 새로운 ReadText(), 첫 번째 매개변수가 문자열인 경우;
    • ReadText.Open(), 첫 번째 매개변수가 문자열인 경우;
    • NewTextRecord(), 첫 번째 매개변수가 문자열인 경우;
    • WriteText.Open(), 첫 번째 매개변수가 문자열인 경우;
    • NewTextExtract();
    • ExtractText.FileName 속성 변경;
    • ExtractText.Write();
    • New Picture(), 첫 번째 매개변수가 문자열인 경우;
    • 그림.쓰기();
    • 새로운 바이너리데이터();
    • 바이너리데이터.쓰기();
    • NewDataRecord(), 첫 번째 매개변수가 문자열인 경우;
    • 새로운 ReadData()에는 첫 번째 매개변수인 문자열이 있습니다.
    • FileStreamManager 개체의 모든 메서드
    • 새로운 파일스트림();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • 텍스트문서.읽기();
    • 텍스트문서.쓰기().
  • 인터넷 액세스:
    • 새로운 인터넷 연결,
    • 새로운 인터넷메일,
    • 새로운 인터넷프록시,
    • 새로운 HTTPConnection,
    • 새로운 FTPConnection.

주목! 금지된 작업을 수행하면 런타임 시 예외가 발생합니다.

메모. 파일 - 열기 메뉴를 사용하여 열린 외부 보고서 및 처리는 사용자에게 관리 액세스 권한이 없는 경우 안전 모드에서 실행됩니다.

안전 모드가 켜진 횟수는 꺼진 횟수와 일치해야 합니다. 그러나 프로시저나 기능 내에서 안전 모드를 켰지만(한 번 이상) 끄지 않은 경우 시스템은 남아 있는 프로시저나 기능에서 불완전하게 켜진 횟수만큼 자동으로 종료됩니다.

프로시저나 함수에서 메서드를 호출하는 경우 안전 모드 설정(거짓)메소드 호출 이상의 것을 수행했습니다. 안전 모드 설정(참), 그러면 예외가 발생합니다.

구성 개발자가 신뢰성을 보장할 수 없는 타사(구성 관련) 프로그램 코드를 사용하려는 경우 안전 모드의 소프트웨어 설치가 필요할 수 있습니다. 이러한 코드의 예로는 실행 가능한 코드를 외부에서 얻은 경우 Execute() 및 Compute() 메서드를 실행하는 것이 있습니다. 이 경우 다음 방법을 실행하기 전에 안전 모드를 설정하는 것이 좋습니다.

// 실행해야 하는 프로그램 코드가 생성됩니다. // 코드가 외부 소스에서 로드되거나 // 수동으로 입력될 수 있습니다. ExecutableCode = GetExecutedCodeFromExternalWorld(); // 안전 모드 활성화 SetSafeMode(True); // 잠재적으로 위험한 코드 실행 Execute(ExecutableCode); // 안전 모드 끄기 SetSafeMode(False);

경우에 따라 안전 모드 설정이 권한 모드 설정과 충돌할 수 있습니다. 이러한 충돌의 예로는 안전 모드에서 실행되는 내장 언어의 코드에서 게시 속성이 설정된 문서 게시를 들 수 있습니다. 이 경우 권한 모드가 비활성화되고 활성화하려는 시도가 무시됩니다. 결과적으로, 활성화된 특권 모드를 "계산"하는 내장 언어의 코드는 그 부재를 "발생"하여 나타나는 이유가 불분명한 오류로 이어집니다. 이러한 상황을 방지하기 위해 1C:Enterprise 시스템은 내장 언어의 실행 코드가 구성 확장에 없는 경우 개체 모듈 또는 관리자 모듈에서 사용 가능한 이벤트 핸들러에 대한 안전 모드를 자동으로 비활성화합니다. 이러한 핸들러는 구문 도우미에서 특별한 방식으로 표시됩니다.

또한 내장 언어에서 안전 모드를 비활성화하는 기능도 제공합니다(비활성화를 시도한 프로그램 코드가 구성 확장에 없는 경우). 안전 모드를 비활성화하는 방법이 있습니다 비활성화안전모드(). 메소드를 사용하여 안전 모드가 현재 비활성화되어 있는지(자동으로 또는 메소드 호출을 통해) 확인할 수 있습니다. GetDisableSafeMode().

내장 언어의 한 메서드 내에는 안전 모드 설정(SetSafeMode() 메서드 호출) 및 안전 모드 비활성화 설정(이벤트 처리기 실행 중 자동으로)이 중첩되는 수준이 두 개 이상 있을 수 없습니다. 메타데이터 객체 또는 SetDisableSafeMode() 메서드 호출). 중첩을 늘리려고 하면 예외가 발생합니다.

// ProcedureProcedureName()의 올바른 사용 SetDisableSafeMode(True); SetSafeMode(true); SetSafeMode(False); SetDisableSafeMode(False); EndProcedure // ProcedureProcedureName()의 잘못된 사용 SetDisableSafeMode(True); SetSafeMode(true); SetDisableSafeMode(False); // 예외 EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // 예외 EndProcedure

일반 사용자로 문서 업로드 프로그램을 실행하면 "안전 모드가 설정되었습니다. 작업이 금지됩니다."라는 오류가 발생합니다.

이런 어려움이 발생하는 이유는 외부 처리를 시작할 수 있는 권한이 부족합니다. 액세스 권한을 구성하려면 대신 1C 엔터프라이즈 모드에서 데이터베이스에 로그인하십시오. 관리자그리고 해당 섹션으로 이동하세요. 사용자 및 권한 설정/접속 그룹 프로필,딸깍 하는 소리 그룹을 생성하려면

그룹 이름을 입력하고 이 그룹의 사용자가 사용할 수 있는 역할에 대한 확인란을 선택합니다.

  • 외부 보고서의 대화형 열기 및 처리
  • 추가 보고서 사용 및 처리

딸깍 하는 소리 저장하고 닫습니다


사용자 메뉴로 돌아가서 문서 업로드 프로그램을 사용할 직원을 목록에서 선택하십시오. 권한을 클릭합니다. 프로필 목록에서 이전에 생성된 프로필을 선택합니다. 딸깍 하는 소리 써 내려 가다.


사용자가 처리를 시작할 수 있도록 외부 처리 목록에 문서 로딩을 추가하는 것이 좋습니다. 메뉴에서 이 작업을 수행하려면 관리 / 인쇄된 양식 및 처리 / 추가 보고서 및 처리새로운 처리를 생성합니다. "Download Documents.epf" 파일의 경로를 지정하고 이름을 지정하십시오. 사용자가 나중에 시작할 수 있는 메뉴에서 처리 위치를 지정합니다. 예를 들어 메뉴를 선택합니다. 디렉토리

빠른 액세스 항목을 클릭하면 어떤 사용자가 처리에 액세스할 수 있는지 표시됩니다.


설정 후 클릭 저장하고 닫습니다. 처리를 시작하려면 사용자는 데이터베이스에 다시 들어가서 액세스 메뉴(예: 디렉터리)에서 데이터베이스를 열고 클릭하기만 하면 됩니다. 실행하다.


열려 있는 메뉴 - 모든 기능.... 목록에서 "보안 프로필이 사용됨" 옵션을 찾으세요.


"보안 프로필이 사용됨" 옵션을 선택 취소하세요.


그 후에 프로그램이 성공적으로 시작됩니다.

외부 처리의 프로그래밍 방식 열기는 다음 유형의 전역 컨텍스트 개체인 외부 처리를 사용하여 수행됩니다. 외부처리관리자. 1C 플랫폼의 각 작동 모드(일반 응용 프로그램 모드 및 관리 응용 프로그램 모드)에 대해 외부 처리 작업을 위해 다양한 개체 방법이 사용됩니다.

일반 응용 프로그램 모드에서 외부 처리 시작

일반적인 애플리케이션에서는 외부 처리 파일의 전체 이름이 전달되는 ExternalProcessing 개체의 Create() 메서드를 사용해야 합니다. 이 메소드는 유형의 객체를 반환합니다. 외부 처리, 이 개체는 열려 있는 외부 처리입니다. 외부 처리 양식을 열어야 하는 경우 기본 양식을 반환하는 수신된 개체에 대해 GetForm() 메서드를 호출한 다음 Open() 메서드를 호출하여 엽니다.


처리 = 외부처리.Create(FullFileName);
처리.GetForm().Open();

외부 처리에서 기본 양식은 항상 일반 양식이어야 하고 제어되는 양식은 항상 추가 양식이어야 합니다. 그렇지 않으면 GetForm() 메서드가 일반 응용 프로그램 모드에서 작동하지 않습니다.

관리형 애플리케이션 모드에서 외부 처리 실행

관리되는 양식 모드에서는 알고리즘이 실행 컨텍스트에 따라 구분됩니다. 클라이언트에서는 외부 처리 파일의 전체 이름을 사용하여 바이너리 데이터를 받습니다. 수신된 바이너리 데이터를 서버로 전송하고 임시 저장소에 보관합니다. 다음으로 임시 저장을 위한 주소가 전달되는 외부 처리 개체의 Connect() 메서드를 호출해야 합니다. 이 메서드는 연결된 외부 처리의 이름을 반환합니다. 외부 처리의 이름을 클라이언트에 반환하고 처리 양식에 대한 문자열 경로를 만든 다음 OpenForm() 메서드를 사용하여 외부 처리 양식을 엽니다.

&서버에서
함수 GetExternalProcessingName(바이너리데이터)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
ReturnExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&On클라이언트
전체파일이름 = ""; // 외부 처리 파일의 전체 이름입니다.
FileData = new BinaryData(FullFileName);
외부처리이름 = GetExternalProcessingName(파일데이터);
OpenForm("외부 처리." + 외부 처리 이름 + ".양식");

외부 처리를 위한 안전 모드

ExternalProcessing 개체의 Create() 및 Connect() 메서드에는 들어오는 매개 변수 SafeMode(안전 모드에서 외부 처리를 연결한다는 표시)가 있습니다. 매개변수를 지정하지 않으면 보안 모드로 연결됩니다.
안전 모드는 시스템이 서버에서 "신뢰할 수 없는" 프로그램 코드를 실행하지 못하도록 보호하도록 설계되었습니다. 잠재적인 위험은 Run() 및 Calculate() 메서드에 사용하기 위해 사용자가 입력한 외부 처리 또는 프로그램 코드로 인해 발생합니다.
안전 모드에는 다음과 같은 제한 사항이 적용됩니다.
  • 권한 모드가 설치된 경우 취소됩니다.
  • 특권 모드로 들어가려는 시도는 무시됩니다.
  • COM 개체를 사용한 작업은 금지됩니다.
  • 외부 구성 요소를 로드하고 연결하는 것은 금지되어 있습니다.
  • 파일 시스템에 대한 접근이 금지됩니다(임시 파일 제외).
  • 인터넷 접속이 금지되어 있습니다.
대화형으로 열린 프로세스는 안전 모드에서 수행되지 않습니다. 따라서 사용자가 대화형으로 외부 프로세서를 여는 것을 금지하는 권한 수준뿐만 아니라 안전 모드에서 외부 프로세서를 여는 메커니즘을 구현하는 것이 좋습니다.
대화형 처리 열기를 금지하려면 사용자에게 할당된 모든 역할에서 "외부 처리의 대화형 열기" 권한을 제거해야 합니다(그림 1 참조).
그림 1. 외부 처리/보고서를 대화형으로 열 수 있는 권한
"외부 처리의 대화형 열기" 권한은 어떤 방식으로든 외부 처리 개체에 영향을 주지 않습니다.

외부 보고서를 프로그래밍 방식으로 여는 것은 외부 처리와 유사하지만 유형이 있는 전역 컨텍스트 개체인 ExternalReports를 사용해야 합니다. 외부 보고서 관리자.

주제에 관한 최고의 기사