Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Știri
  • Deschiderea software-ului de prelucrare externă. Modul sigur

Deschiderea software-ului de prelucrare externă. Modul sigur

Odată cu lansarea platformei 8.3.9.2033, a apărut un nou mecanism „Protecție împotriva acțiunilor periculoase”.

Datorită acestei inovații, 1C a început acum să înjure la deschiderea procesării (și nu numai):

Avertizare de securitate

Deschide „My External Processing” din fișierul „My_External_Processing.epf”

Este recomandat să acordați atenție sursei din care a fost obținut acest fișier. Dacă nu există un acord cu sursa cu privire la dezvoltarea modulelor suplimentare sau există îndoieli cu privire la conținutul fișierului, atunci nu este recomandat să îl deschideți, deoarece acest lucru poate dăuna computerului și datelor.

Îmi permiteți să deschid acest fișier?

Așa că 1C a decis să lupte împotriva codului rău intenționat!

De unde va veni acest „cod rău intenționat” într-o întreprindere este încă un mister)

Acțiunile potențial periculoase au inclus:

  • Încărcarea unui raport extern, procesare sau extensie de configurare.
  • Se încarcă sau se actualizează configurația/extensia.
  • Acces de la un raport/procesor extern sau extensie la următoarele capabilități:
  • Executarea unei comenzi de sistem de operare.
  • Gestionarea utilizatorilor (înregistrarea sau ștergerea informațiilor despre un utilizator al bazei de informații).
  • Apelarea metodei Connect() a managerului de procesare externă (rapoarte).
  • Apelarea metodei ExtendConfiguration.Write().
  • Lucrul cu obiecte COM.

Cum poate fi oprit acest „miracol”?

Pentru a face acest lucru, trebuie să lansați 1C Enterprise în modul configurator.
Selectați meniul „Administrare” - „Utilizatori”.
În fereastra care se deschide pentru utilizatorii noștri, trebuie să deschideți fereastra cu setările utilizatorului și să debifați fila „De bază” „Protecție împotriva acțiunilor periculoase”

Există și alte modalități de a dezactiva acest lucru:

Acum este posibil să specificați o listă de baze de informații, atunci când lucrați cu care protecția împotriva acțiunilor periculoase va fi dezactivată.
Această funcție este responsabilă pentru parametrul DisableUnsafeActionProtection din fișierul conf.cfg, care vă permite să dezactivați mecanismul de protecție împotriva acțiunilor periculoase pentru toți utilizatorii anumitor baze de informații ale căror șiruri de conexiune satisfac măștile specificate în parametrul DisableUnsafeActionProtection.

În acest parametru puteți specifica mai multe măști separate prin simbolul „;”, de exemplu:

DisableUnsafeActionProtection=test_.*;stage_.*;

În plus, protecția împotriva acțiunilor periculoase ale utilizatorului poate fi dezactivată programatic, pentru care sunt disponibili următorii parametri și proprietăți:

  • Parametru Protecție împotriva acțiunilor periculoase a metodelor Connect() ale managerilor externi de procesare (rapoarte).
  • Proprietatea Protection Against Dangerous Actions a obiectului Configuration Extension înainte de a apela metoda Write() a acestui obiect.

Verificarea necesității utilizării protecției împotriva acțiunilor periculoase se realizează în următoarea ordine:

1. Dacă caseta de selectare „Protecție împotriva activităților periculoase” a utilizatorului curent este debifată, atunci protecția este considerată dezactivată.

2. Dacă șirul de conexiune la baza de informații satisface unul dintre modelele specificate în parametrul DisableUnsafeActionProtection al fișierului conf.cfg, atunci protecția este considerată dezactivată.

3. Dacă protecția este dezactivată în mod explicit, utilizând parametrul Protecție împotriva acțiunilor periculoase al procesării sau raportului extern.

4. Dacă protecția este dezactivată în mod explicit folosind proprietatea extensiei Protecție împotriva acțiunilor periculoase.

Folosind „Trade Management 11.3” ca exemplu, vom lua în considerare procesul simplu de conectare a unui formular de imprimare extern. Vom lua în considerare și caracteristicile noului sistem de securitate.

Trecere rapidă

Acțiuni preliminare

Mai întâi ar trebui activați funcționalitatea sau verificați disponibilitatea acestuia

1. Conectați-vă cu drepturi depline la baza de date de informații.

2. Accesați meniul „Date principale și administrare”/Bloc „Administrare”/Comandă „Formulare tipărite, rapoarte și procesare”.

Plus

În secțiunea care se deschide:

Adăugăm procesarea folosind butonul „Creare” (acest lucru este important) sau „Actualizare!” existent:

  • Selectați-l în listă (dacă nu este selectat sau este gol, comanda nu va funcționa, dar nu va spune nimic).
  • Faceți clic pe butonul „Încărcare din fișier”.

După apariția pentru 1C în procesarea externă, verificările de securitate au apărut în configurații noi.

Ar trebui să instalați numai procesări create independent sau primite prin canale de comunicare cunoscute (nu din e-mail, doar de pe un site web cu certificat valabil sau furnizate de angajații dezvoltatorului, confirmate de acesta prin telefon).

Dacă totul în procesare este prescris de dezvoltator, atunci va fi setat „Plasarea” - obiectele în care va fi implicată procesarea, vor apărea comenzile.
Pentru a lucra, faceți clic pe „Salvați și închideți”.

Examinare

Imediat după aceasta, în funcție de tipul de tratament:

  • Formularul tipărit devine disponibil la deschiderea unui document sau din lista acestuia (pentru unul deja deschis când îl deschideți din nou) făcând clic pe butonul „Imprimare”.
  • Procesarea este disponibilă în secțiunile „Procesare suplimentară” din fiecare subsistem
  • Procesarea completării utilizând butonul „Umplere” al listei sau panoul de comandă principal al formularului obiect.

Pentru procesarea de mai sus, lansarea va arăta astfel:

Dacă documentul este nou, ar trebui să fie notat, mecanismul extern de procesare vă va avertiza despre acest lucru:

Comportamentul suplimentar depinde de funcționalitatea încorporată: este posibil să deschideți un formular sau pur și simplu să procesați date.

Avertismente de securitate în 1C

Noile versiuni și configurații ale platformei au o protecție sporită împotriva lansării de programe rău intenționate.

Procesarea poate determina lansarea Excel pentru a încărca, caz în care noul subsistem de securitate vă va avertiza și:

În acest caz, codul de gestionare este întrerupt.

Dacă faceți clic pe „Da”, sistemul vă va cere să executați din nou comanda:

Este posibil ca un utilizator al bazei de informații să dezactiveze protecția împotriva acțiunilor periculoase prin „Configurator”:

Acest lucru nu poate fi schimbat din modul „Enterprise”, poate că a fost făcut intenționat și poate apărea după actualizare.

De asemenea, trebuie remarcat faptul că, dacă procesarea folosește Excel, trebuie să ruleze în modul nesigur (așa era cazul înainte de introducerea noului sistem, acesta funcționează în paralel):

„Nu se poate încărca MS EXCEL!!!” „Modul sigur a fost setat. Operațiunea este interzisă”

În procesarea externă, arată astfel:

Dezvoltatorul ar trebui să îl seteze la „False” în descrierea procesării interne, apoi totul va fi bine:

Funcție InformationOnExternalProcessing() ExportRegistrationParameters = Structură nouă; Parametri de înregistrare.Insert("SafeMode", False);

La actualizarea configurației, a apărut și un text de avertizare despre sursa din care a fost obținut fișierul de configurare:

Imprimare (Ctrl+P)

Obiecte de configurare

Dacă este necesar să folosiți cod de program „neîncrezător” pe server: procesare externă sau cod de program introdus de utilizator pentru a fi utilizat în metodele Run() și Calculate(), puteți utiliza modul de operare sigur.

În modul sigur:

  • Mod privilegiat anulat.
  • Trecerea la modul privilegiat ignorat.
  • Interzis operațiuni care conduc la utilizarea de mijloace externe în legătură cu platforma 1C:Enterprise (inclusiv analogi neblocatori ai metodelor specificate):
  • Mecanisme COM:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Încărcarea componentelor externe:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Acces la sistemul de fișiere:
    • ValueInFile();
    • Copiaza fisier();
    • MergeFiles();
    • MutareFișier();
    • SplitFile();
    • CreateDirectory();
    • Sterge fisierele();
    • Fișier nou;
    • xBase nou;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • New ReadText(), dacă primul parametru este un șir;
    • ReadText.Open(), dacă primul parametru este un șir;
    • NewTextRecord(), dacă primul parametru este un șir;
    • WriteText.Open(), dacă primul parametru este un șir;
    • NewTextExtract();
    • modificarea proprietății ExtractText.FileName;
    • ExtractText.Write();
    • New Picture(), dacă primul parametru este un șir;
    • Imagine.Scrie();
    • nou BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), dacă primul parametru este un șir;
    • New ReadData(), există un prim parametru - un șir;
    • toate metodele obiectului FileStreamManager;
    • New FileStream();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • Acces la internet:
    • Noua conexiune la internet,
    • InternetMail nou,
    • InternetProxy nou,
    • Noua conexiune HTTP,
    • Noua conexiune FTP.

ATENŢIE! Când se efectuează operațiuni interzise, ​​se aruncă o excepție în timpul execuției.

Notă. Rapoartele externe și procesările deschise folosind meniul Fișier - Deschidere sunt executate în modul sigur dacă utilizatorul nu are drepturi de acces administrativ.

Numărul de porniri ale modului sigur trebuie să corespundă cu numărul de dezactivari. Cu toate acestea, dacă modul sigur a fost activat în cadrul unei proceduri sau funcție (o dată sau de mai multe ori), dar nu a fost oprit, sistemul se va opri automat de câte ori au fost porniri incomplete în procedura sau funcția rămasă.

Dacă într-o procedură sau funcție apelează o metodă SetSafeMode(False) a făcut mai mult decât apeluri de metodă SetSafeMode (Adevărat), atunci va fi aruncată o excepție.

Instalarea software-ului în modul sigur poate fi necesară atunci când dezvoltatorul de configurație intenționează să utilizeze cod de program terță parte (în legătură cu configurația), a cărui fiabilitate dezvoltatorul nu poate garanta. Un exemplu de astfel de cod este executarea metodelor Execute() și Compute() în cazurile în care codul executabil este obținut din lumea exterioară. În acest caz, o bună practică ar fi să setați modul sigur înainte de a executa aceste metode:

// Se generează cod de program care ar trebui executat // Este posibil ca codul să fie încărcat din surse externe // sau introdus manual ExecutableCode = GetExecutedCodeFromExternalWorld(); // Activează modul sigur SetSafeMode(True); // Executați cod potențial periculos Execute(ExecutableCode); // Dezactivează modul sigur SetSafeMode(False);

În unele cazuri, setările modului sigur pot intra în conflict cu setările modului privilegiat. Un exemplu de astfel de conflict este postarea unui document pentru care este setat modul Privilegiat la postare, din codul în limbajul încorporat care este executat în modul sigur. În acest caz, modul privilegiat este dezactivat și încercările de a-l activa sunt ignorate. Drept urmare, codul din limbajul încorporat, care „contează” pe modul privilegiat activat, „întâlnește” absența acestuia, ceea ce duce la erori cu motive neevidente ale apariției lor. Pentru a preveni această situație, sistemul 1C:Enterprise dezactivează automat modul sigur pentru gestionatorii de evenimente care sunt disponibili în modulul obiect sau modulul manager, cu condiția ca codul executabil în limbajul încorporat să nu fie localizat în extensia de configurare. Astfel de handlere sunt marcate într-un mod special în asistentul de sintaxă.

De asemenea, oferă posibilitatea de a dezactiva modul sigur din limbajul încorporat (dacă codul de program din care se încearcă dezactivarea nu se află într-o extensie de configurare). Pentru a dezactiva modul sigur există o metodă SetDisableSafeMode(). Puteți verifica dacă modul sigur este dezactivat în prezent (automat sau apelând o metodă) folosind metoda GetDisableSafeMode().

Într-o singură metodă în limbajul încorporat, nu poate exista mai mult de un nivel de imbricare de setare a modului sigur (prin apelarea metodei SetSafeMode()) și setarea dezactivării modului de siguranță (automat în timpul execuției de gestionare a evenimentelor de obiecte metadate sau apelând metoda SetDisableSafeMode()). Când încercați să creșteți imbricarea, se face o excepție:

// Utilizarea corectă a ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode (adevărat); SetSafeMode(False); SetDisableSafeMode(False); EndProcedure // Utilizarea incorectă a ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode (adevărat); SetDisableSafeMode(False); // Excepție EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Excepție EndProcedure

Când rulați programul de încărcare a documentelor ca utilizator obișnuit, eroarea „Modul sigur este setat. Operația este interzisă”.

Această dificultate apare deoarece Nu există suficiente drepturi pentru a începe procesarea externă. Pentru a configura drepturile de acces, conectați-vă la baza de date în modul 1C Enterprise în numele Administratorși mergi la secțiune Setări utilizator și drepturi / Profiluri de acces de grup, clic Pentru a crea un grup.

Introduceți numele grupului și bifați casetele pentru rolurile disponibile pentru utilizatorii acestui grup -

  • Deschiderea interactivă a rapoartelor externe și procesare
  • Utilizarea rapoartelor și procesării suplimentare

Clic Salveaza si inchide


Reveniți la meniul Utilizatori și selectați din listă angajatul care va lucra cu programul de încărcare document. Faceți clic pe Permisiuni. În lista de profiluri, selectați profilul creat anterior. Clic Scrie.


Pentru ca utilizatorii să poată începe procesarea, este recomandat să adăugați Încărcarea documentului la lista de procesări externe. Pentru a face acest lucru în meniu Administrare / Formulare tipărite și procesare / Rapoarte suplimentare și procesare creați o nouă prelucrare. Specificați calea către fișierul „Download Documents.epf” și atribuiți un nume. Specificați locația procesării în meniu, de unde utilizatorul o poate lansa mai târziu, de exemplu, selectați meniul Directoare

Făcând clic pe elementul Acces rapid, indicați ce utilizatori au acces la procesare:


După setare, faceți clic Salveaza si inchide. Pentru a începe procesarea, utilizatorii vor trebui doar să reintroducă baza de date și să o deschidă din meniul de acces (în exemplu - Directoare) și să facă clic A executa.


Deschis Meniu - Toate funcțiile.... și găsiți opțiunea „Se folosesc profiluri de securitate” din listă.


Doar debifați opțiunea „Se folosesc profiluri de securitate”.


După aceasta, programul se va lansa cu succes.

Deschiderea programatică a prelucrării externe se realizează folosind obiectul context global ExternalProcessing, care are tipul ExternalProcessingManager. Pentru fiecare mod de operare al platformei 1C (modul de aplicare obișnuit și modul de aplicație gestionată), sunt utilizate diferite metode obiect pentru a lucra cu procesare externă.

Pornirea procesării externe în modul normal de aplicare

Într-o aplicație tipică, trebuie să utilizați metoda Create() a obiectului ExternalProcessing, căruia i se transmite numele complet al fișierului de procesare externă. Metoda returnează un obiect de tip Procesare externă, acest obiect este procesarea externă care se deschide. Dacă trebuie să deschideți un formular de procesare extern, atunci apelați metoda GetForm() pe obiectul primit, care va returna formularul principal, apoi apelați metoda Open() pentru a-l deschide.


Procesare = ExternalProcessing.Create(FullFileName);
Procesare.GetForm().Open();

În procesarea externă, forma principală trebuie să fie întotdeauna una obișnuită, iar forma controlată trebuie să fie întotdeauna una suplimentară, altfel metoda GetForm() nu va funcționa în modul de aplicare normal.

Rularea procesării externe în modul aplicație gestionată

În modul formulare gestionate, algoritmul este împărțit în funcție de contextul de execuție. Pe client, primim date binare folosind numele complet al fișierului de procesare externă. Transferăm datele binare primite pe server și le plasăm în stocare temporară. Apoi, trebuie să apelați metoda Connect() a obiectului ExternalProcessing, la care este transmisă adresa pentru stocarea temporară. Metoda returnează numele procesării externe conectate. Returnăm clientului numele procesării externe, creăm o cale de șir către formularul de procesare și folosim metoda OpenForm() pentru a deschide formularul de procesare externă.

&Pe server
Funcția GetExternalProcessingName(BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Returnare ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&OnClient
FullFileName = ""; // Numele complet al fișierului de procesare externă.
FileData = new BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Modul sigur pentru procesare externă

Metodele Create() și Connect() ale obiectului ExternalProcessing au un parametru de intrare SafeMode - un semn al conectării procesării externe în modul sigur. Dacă parametrul nu este specificat, conexiunea se va face în mod securizat.
Modul sigur este conceput pentru a proteja sistemul de executarea codului de program „neîncrezător” pe server. Potențialul pericol provine din procesarea externă sau codul de program introdus de utilizator pentru a fi utilizat în metodele Run() și Calculate().
Modul sigur impune următoarele restricții:
  • modul privilegiat este anulat dacă a fost instalat;
  • încercările de a intra în modul privilegiat sunt ignorate;
  • operațiunile cu obiecte COM sunt interzise;
  • încărcarea și conectarea componentelor externe este interzisă;
  • accesul la sistemul de fișiere este interzis (cu excepția fișierelor temporare);
  • Accesul la internet este interzis.
Procesele deschise interactiv nu se desfășoară în modul sigur, de aceea se recomandă implementarea unui mecanism de deschidere a procesoarelor externe în modul sigur, precum și la nivel de permisiune pentru a interzice utilizatorului deschiderea interactivă a procesoarelor externe.
Pentru a interzice deschiderea interactivă a prelucrării, în toate rolurile atribuite utilizatorului, este necesar să eliminați dreptul „Deschiderea interactivă a prelucrării externe” (vezi Figura 1).
Figura 1. Drepturi de a deschide interactiv procesări/rapoarte externe
Dreptul „Deschiderea interactivă a prelucrării externe” nu afectează în niciun fel obiectul Prelucrare externă.

Deschiderea programatică a rapoartelor externe este similară cu procesarea externă, dar ar trebui să utilizați obiectul context global ExternalReports, care are tipul ExternalReportsManager.

Cele mai bune articole pe această temă