Računalniki Windows internet

Kako onemogočiti varni način v 1 s 8.3. Pavel je čist. Varen način za zunanje zdravljenje

Dejstvo je, da se pri uporabi odjemalsko-strežniške različice delovanja 1C zunanja obdelava / poročila odprejo v varnem načinu, v katerem je uporaba privilegiranega načina prepovedana. In privilegirani način se zelo pogosto uporablja v tipičnih konfiguracijah: oblikovanje tiskanih obrazcev, različna preverjanja storitev (registracija menjalnic) itd. Posledično boste tudi z uporabo običajnega poročila o ACS brez obrazca (privzeto se uporablja splošni obrazec "Report Form") in shranjevanja nastavitev poročila po meri (na ustrezno referenco) prejeli napako o nezadostnem dostopu pravice do različnih konstant in parametrov seje, ki se uporabljajo za storitvene namene po vrstici SetPrivilegedMode (True);

"Pravilna" rešitev bi bila povezovanje zunanjih procesorjev in poročil preko mehanizmov BSP "Dodatna poročila in obdelava" z onemogočanjem varnega načina ali dodajanjem dovoljenj (po mojem mnenju iz različice BSP 2.2.2.1). Ampak, če je iz nekega razloga potrebno uporabiti natančno zunanje datoteke poročil/obdelava, lahko konfigurirate varnostni profil gruče, ki se uporablja kot varnostni profil v varnem načinu za določeno informacijsko bazo.

Takoj bi rad omenil, da ta možnost ni zaželena, vendar jo je zaradi različnih okoliščin mogoče uporabiti v tako poenostavljeni obliki. Imam na primer več baz v različnih mestih, skupen lokal sedi s strogo omejenimi pravicami, zaprt USB itd., nekje uporabljam Računovodstvo 2.0, nekje 3.0, skoraj vsa poročila naredim z ACS brez obrazcev, tako da odprt v obeh različicah. Postrežite vsa ta poročila za različne različice in različne baze je naporen in brezupen posel, tk. načrti vključujejo prehod na enotno konfiguracijo in bazo ...

Ustvarimo profil.
V konzoli gruče ustvarimo varnostni profil, v katerem nastavimo zastavice "Lahko se uporablja kot varnostni profil v varnem načinu" in "pod" Dovoljeno popoln dostop:" "v privilegiran način".

V mnogih primerih uporabe poročil in enostavne obdelave bo ta metoda uporabna. Za bolj zapletene situacije ni smiselno opisovati postopka, ker je navedeno v dokumentaciji (zmožnost prilagajanja varnostnih profilov za določene zunanje datoteke z navedbo njenega hasha itd.).

P.S. Mislil sem, da varnostni profili delujejo samo pri uporabi licenc za platformo in strežnik ravni CORP, vendar je ta funkcionalnost izpolnjena tudi na platformi 1C: Enterprise 8.3 (pogojno lahko PROF pokličete po analogiji s tipičnimi konfiguracijami Basic / PROF / CORP )

Tiskanje (Ctrl + P)

Konfiguracijski objekti

Če je treba na strežniku uporabiti "nezanesljivo" programsko kodo: zunanja obdelava oz programsko kodo ki jih je uporabnik vnesel za uporabo v metodah Run () in Evaluate (), lahko uporabite varen način delovanja.

V varnem načinu:

  • Privilegiran način prekinjeno.
  • Vstop v privilegirani način prezrti.
  • so prepovedani operacije, ki vodijo do uporabe zunanjih sredstev v zvezi s platformo 1C: Enterprise (vključno z neblokirnimi analogi zgornjih metod):
  • COM mehanizmi:
    • COM objekt ();
    • GetCOMObject ();
    • Ovitek HTMLDocument.GetCOMObject ().
  • Nalaganje zunanjih komponent:
    • Naloži zunanjo komponento ();
    • Povežite zunanjo komponento ().
  • Dostop do datotečni sistem:
    • ValueInFile ();
    • CopyFile ();
    • Združi datoteke ();
    • Premakni datoteko ();
    • SplitFile ();
    • Ustvari imenik ();
    • Izbriši datoteke ();
    • Nova datoteka;
    • Nova xBase;
    • HTMLWrite.OpenFile ();
    • Branje HTML.OpenFile ();
    • Preberite XML.OpenFile ();
    • XMLWrite.OpenFile ();
    • ReadingFastInfoset.OpenFile ();
    • WriteFastInfoset.OpenFile ();
    • CanonicalXMLWriter.OpenFile ();
    • ConversionXSL.LoadFromFile ();
    • WriteZipFile.Open ();
    • Branje datoteke ZipFile.Open ();
    • NewTextReader (), če je prvi parameter niz;
    • ReadText.Open (), če je prvi parameter niz;
    • NewWriteText (), če je prvi parameter niz;
    • WriteText.Open (), če je prvi parameter niz;
    • NewExtractText ();
    • spreminjanje lastnosti RetrieveText.FileName;
    • ExtractText.Write ();
    • Nova slika (), če je prvi parameter niz;
    • Slika.Napiši ();
    • Novi binarni podatki ();
    • BinarniPodatki.Zapiši ();
    • NewDataWrite (), če je prvi parameter niz;
    • NewReaderData (), obstaja prvi parameter - niz;
    • vse metode predmeta FileStreamManager;
    • Nov tok datotek ();
    • FormattedDocument.Write ();
    • GeographicSchema.Read ();
    • Geografska shema.Zapis ();
    • Geografska shema.Print ();
    • TabličniDocument.Preberi ();
    • TabličniDocument.Write ();
    • TabličniDocument.Print (); GraphicSchema.Read ();
    • GraphicalScheme.Write ();
    • GraphicalScheme.Print ();
    • BesedilniDocument.Preberi ();
    • Besedilni dokument. Zapiši ().
  • Dostop do interneta:
    • Nova internetna povezava,
    • Nova internetna pošta,
    • Nov internetni proxy,
    • Nova povezava HTTP,
    • Nova povezava FTP.

POZOR! Vrže izjemo pri izvajanju prepovedanih operacij med izvajanjem.

Opomba. Zunanja poročila in obdelava, odprta z menijem Datoteka - Odpri, se izvajajo v varnem načinu, če uporabnik nima pravic skrbniškega dostopa.

Število okvar mora biti enako številu izklopov. Če pa je bil varen način vklopljen (enkrat ali večkrat) znotraj postopka ali funkcije, vendar ni bil izklopljen, se bo sistem samodejno izklopil tolikokrat, kolikor je bilo v postopku ali funkciji nedokončanih vklopov. zapuščeni.

Če postopek ali funkcija pokliče metodo Nastavi varni način (False) naredil več kot klici metod Nastavi varni način (True) potem bo vrnjena izjema.

Nastavitev programske opreme v varnem načinu je morda potrebna, ko razvijalec konfiguracije prevzame uporabo programske kode tretjih oseb (v zvezi s konfiguracijo), katere zanesljivosti razvijalec ne more zagotoviti. Primer takšne kode je izvedba metod Execute () in Compute () v primerih, ko je izvedljiva koda pridobljena iz zunanjega sveta. V tem primeru je dobra praksa, da nastavite varen način, preden izvedete te metode:

// Generirana je programska koda, ki jo je treba izvesti // Možno je, da je koda naložena iz zunanjih virov // ali vnesena ročno ExecutableCode = GetExecutiveCodeFrom the ExternalWorld (); // Omogoči varni način Nastavi varni način (True); // Izvedi potencialno nevarno kodo Execute (Izvedljiva koda); // Izklopi varni način Nastavi varni način (False);

V nekaterih primerih so nastavitve varnega načina lahko v nasprotju z nastavitvami privilegiranega načina. Primer takega konflikta je objava dokumenta, ki ima privilegirani način za objavo nastavljeno lastnost iz vdelane kode, ki se izvaja v varnem načinu. V tem primeru je privilegirani način onemogočen, poskusi njegovega omogočanja pa so prezrti. Posledično koda v vgrajenem jeziku, ki se "zanaša" na omogočen privilegiran način, "trči" z njegovo odsotnostjo, kar vodi do napak z neočitnimi razlogi. Da bi preprečili takšno situacijo, sistem 1C: Enterprise samodejno onemogoči varni način za obdelovalce dogodkov, ki so na voljo v objektnem modulu ali modulu upravitelja, pod pogojem, da se izvedljiva koda v vdelanem jeziku ne nahaja v konfiguracijski razširitvi. Takšni obdelovalci so v pomočniku za skladnjo označeni na poseben način.

Omogoča tudi možnost onemogočanja varnega načina iz vdelanega jezika (če programska koda, iz katere se poskuša prekiniti, ni v konfiguracijski razširitvi). Če želite onemogočiti varni način, uporabite metodo Onemogoči varni način ()... Preverite, ali je vklopljen varni način ta trenutek onemogočeno (samodejno ali s klicem metode), lahko uporabite metodo GetDisableSafeMode ().

Znotraj ene metode vdelanega jezika ne more obstajati več kot ena raven gnezdenja za nastavitev varnega načina (s klicem metode SetSafeMode ()) in nastavitev za onemogočanje varnega načina (samodejno za čas trajanja obdelovalcev dogodkov metapodatkovnega predmeta ali s klicem SetDisableSafeMode () metoda). Ko poskušate povečati gnezdenje, se vrne izjema:

// Pravilna uporaba Procedure ProcedureName () SetSafeModeDisable (True); Nastavite varni način (True); Nastavite varni način (False); Onemogoči varni način (False); EndProcedure // Nepravilna uporaba Procedure ProcedureName () SetSafeModeDisable (True); Nastavite varni način (True); Onemogoči varni način (False); // Izjema EndProcedure Procedure ProcedureName () SetSafeMode (True); Onemogoči varni način (False); // Izjema EndProcedure

Zunanja obdelava se programsko odpre z globalnim kontekstnim objektom ExternalProcessing, ki ima tip ExternalProcessingManager... Za vsak način delovanja platforme 1C (normalni aplikacijski način in način upravljane aplikacije) se za delo z zunanjo obdelavo uporabljajo različne objektne metode.

Zaženite zunanjo obdelavo v običajnem načinu aplikacije

V tipični aplikaciji morate uporabiti metodo Create () predmeta ExternalProcessing, ki se ji posreduje polno ime zunanje datoteke za obdelavo. Metoda vrne objekt tipa Zunanja obdelava, ta objekt je zunanja obdelava, ki se odpira. Če morate odpreti zunanji obrazec za obdelavo, pokličite metodo GetForm () za nastali objekt, ki bo vrnil glavni obrazec, in nato pokličite metodo Open (), da ga odprete.


Obdelava = ExternalProcessing.Create (FullFileName);
Processing.GetForm (). Odpri ();

V zunanjih procesorjih mora biti glavni obrazec vedno navaden obrazec, upravljani obrazec pa mora biti vedno dodatni, sicer metoda GetForm () ne bo delovala v običajnem načinu aplikacije.

Zagon zunanje obdelave v načinu upravljane aplikacije

V načinu upravljanih obrazcev se prikaže razdelitev algoritma glede na kontekst izvajanja. Na odjemalcu dobimo binarne podatke po polnem imenu zunanje datoteke obdelave. Prejete binarne podatke prenesemo na strežnik in jih shranimo v začasno shranjevanje. Nato morate poklicati metodo Connect () predmeta ExternalProcessing, na katerega se posreduje naslov začasno shrambo. Metoda vrne ime povezane zunanje obdelave. Odjemalcu vrnemo ime zunanje obdelave, oblikujemo pot niza do obrazca za obdelavo in z metodo OpenForm () odpremo zunanji obrazec za obdelavo.

&Na strežniku
Funkcija GetExternalProcessingName (BinaryData)
AddressToTemporaryStorage = PutToTemporalStore (BinaryData);
Vrni ExternalProcessing.Connect (AddressInTemporaryStorage);
Končna funkcija

& OnClient
FullFileName = ""; // Polno ime zunanje datoteke za obdelavo.
FileData = New BinaryData (FullFileName);
ExternalProcessingName = GetExternalProcessingName (FileData);
OpenForm ("ExternalProcessing." + ExternalProcessingName + ".Form");

Varen način za zunanje zdravljenje

Metodi Create () in Connect () objekta ExternalProcessing imata vhodni parameter SafeMode - znak povezovanja zunanje obdelave v varnem načinu. Če parameter ni določen, bo povezava vzpostavljena v varnem načinu.
Varni način delo je namenjeno zaščiti sistema pred izvajanjem "nezanesljive" programske kode na strežniku. Potencialna nevarnost je zunanja obdelava ali programska koda, ki jo vnese uporabnik za uporabo v metodah Execute () in Calculate ().
Varni način ima naslednje omejitve:
  • privilegirani način je preklican, če je bil nastavljen;
  • poskusi vstopa v privilegirani način so prezrti;
  • operacije z objekti COM so prepovedane;
  • nalaganje in povezovanje zunanjih komponent je prepovedano;
  • dostop do datotečnega sistema je zavrnjen (razen za začasne datoteke);
  • Dostop do interneta je onemogočen.
Interaktivno odprte obdelave se ne izvajajo v varnem načinu, zato je priporočljivo implementirati mehanizem za odpiranje zunanjih procesorjev v varnem načinu, kot tudi preprečiti uporabniku interaktivno odpiranje zunanjih procesorjev na ravni pravic.
Če želite prepovedati interaktivno odpiranje obdelave, morate v vseh vlogah, ki so dodeljene uporabniku, odstraniti pravico »Interaktivno odpiranje zunanje obdelave« (glejte sliko 1).
Slika 1. Pravice interaktivnega odpiranja zunanjih obdelav/poročil
Interaktivno desno odpiranje zunanjih procesorjev na noben način ne vpliva na objekt ExternalProcessing.

Če programsko odprete zunanja poročila, podobno kot zunanji procesorji, morate uporabiti le globalni kontekstni objekt Zunanja poročila, ki ima vrsto ExternalReportManager.