Įtaisytosios kalbos perpildymas 1c serveryje. Derinimo dėklo perpildymo problemos

Šiame kontekste dėklas yra paskutinis pirmame buferyje, kurį paskirstote vykdydami savo programą. Paskutinis, pirmas (LIFO) reiškia, kad paskutinis dalykas, kurį įdedate, visada yra pirmas, ką grąžinate atgal – jei ant krūvos iškeliate 2 elementus, „A“, o po to „B“, tada pirmas dalykas, kurį iškeliate iš krūvos. bus "B", o kitas dalykas bus "A".

Kai iškviečiate funkciją savo kode, kita komanda po funkcijos iškvietimo išsaugoma krūvoje ir bet kurioje atminties vietoje, kurią gali perrašyti funkcijos iškvietimas. Pasirinkta funkcija savo vietiniams kintamiesiems gali naudoti daugiau krūvos. Kai tai bus padaryta, ji atlaisvins vietinę kintamąją erdvę, kurią ji naudojo, ir grįš į ankstesnę funkciją.

Stack Overflow

Kamino perpildymas yra tada, kai naudojote daugiau atminties kamino, nei buvo numatyta naudoti jūsų programoje. Įterptosiose sistemose galite turėti tik 256 baitus kaminui, o jei kiekviena funkcija užima 32 baitus, galite turėti tik 8 funkcijų iškvietimus į 2 funkciją su gilia 1 funkcija, kuri iškviečia 3 funkciją, kuri iškviečia 4 funkciją. ...kas iškviečia 8 funkciją, kuri iškviečia 9 funkciją, bet funkcija 9 perrašo atmintį už krūvos ribų. Tai gali perrašyti atmintį, kodą ir pan.

Daugelis programuotojų daro šią klaidą iškviesdami funkciją A, kuri vėliau iškviečia funkciją B, kuri vėliau iškviečia funkciją C, o vėliau iškviečia funkciją A. Ji gali veikti dažniausiai, bet tik dėl vienos neteisingos įvesties ji sukasi iki kompiuterio. nepavyksta sužino, kad krūva pilna.

Rekursinės funkcijos taip pat yra to priežastis, tačiau jei rašote rekursyviai (t. y. jūsų funkcija išsikviečia save), turite tai žinoti ir naudoti statinius / visuotinius kintamuosius, kad išvengtumėte nesibaigiančios rekursijos.

Paprastai OS ir programavimo kalba, kurią naudojate, tvarko krūvą, ir tai nėra jūsų rankose. Turėtumėte pažvelgti į savo iškvietimo grafiką (medžio struktūrą, kuri iš pagrindinio taško parodo, ką kiekviena funkcija iškviečia), kad pamatytumėte, kiek gilūs yra jūsų funkcijų iškvietimai, ir identifikuokite kilpas bei rekursiją, kurios nėra skirtos. Tyčinės kilpos ir rekursija turi būti dirbtinai patikrintos klaidų, jei jos skambina viena kitai per daug kartų.

Be geros programavimo praktikos, statinio ir dinaminio testavimo, šiose aukšto lygio sistemose jūs negalite daug nuveikti.

Įterptinės sistemos

Įterptajame pasaulyje, ypač aukšto užtikrinimo kodo (automobilių, kosmoso, kosmoso), atliekate išsamius bandymus ir kodo peržiūrą, tačiau taip pat atliekate šiuos veiksmus:

  • Išjungti rekursiją ir ciklus – politikos ir testavimo atitiktis
  • Laikykite kodą ir sudėkite toli vienas nuo kito (kodas „flash“, sudėkite į RAM ir niekada nesutaps)
  • Aplink krūvą pastatykite apsauginius strypus – tuščią atminties sritį, kurią užpildote magišku skaičiumi (dažniausiai pertraukimo rutina, bet čia yra daug variantų) ir šimtus ar tūkstančius kartų per sekundę žiūrite į apsaugines juostas, kad padarytumėte tikrai jie nebuvo perrašyti.
  • Naudokite atminties apsaugą (t. y. nevykdykite krūvoje, neskaitykite ir nerašykite tiesiai už krūvos)
  • Pertraukimai neiškviečia antrinių funkcijų – jie nustato vėliavėles, kopijuoja duomenis ir leidžia programai pasirūpinti jų tvarkymu (kitaip galite patekti į 8 giliai funkcijų iškvietimų medyje, turėti pertraukimą ir tada turėti dar kelias funkcijas. pertraukimo išėjimas, sukeliantis metimą). Turite kelis skambučių medžius – vieną pagrindiniams procesams ir vieną kiekvienam pertraukimui. Jei jūsų trukdžiai gali nutraukti vienas kitą... na, yra drakonų...

Aukšto lygio kalbos ir sistemos

Tačiau aukšto lygio kalbomis, veikiančiomis operacinėse sistemose:

  • Sumažinti vietinė parduotuvė kintamieji (vietiniai kintamieji yra saugomi krūvoje), nors kompiliatoriai šiuo klausimu yra gana protingi ir kartais įdės didelius gabalus į krūvą, jei jūsų skambučių medis yra mažas)
  • Venkite arba griežtai apribokite pasikartojimą
  • Nenutraukite programų per daug į vis mažesnes funkcijas – net neatsižvelgdami į vietinius kintamuosius, kiekvienas funkcijos iškvietimas sunaudoja iki 64 baitų krūvoje (32 bitų procesorius, sutaupant pusę procesoriaus registrų, vėliavėlių ir pan.).
  • Laikykite skambučių medį negilų (panašiai kaip aprašyta aukščiau)

Web serveriai

Nuo turimos smėlio dėžės priklauso, ar galite valdyti ar net matyti krūvą. Tikėtina, kad žiniatinklio serverius galėsite tvarkyti kaip bet kurią kitą aukšto lygio kalbą ir operacinę sistemą – tai iš esmės nepriklauso nuo jūsų rankų, tačiau patikrinkite naudojamą kalbą ir serverio krūvą. Pavyzdžiui, galite padalinti steką savo SQL serveryje.

Galima atsisiųsti Informix® DataBlade™ API programuotojo vadovą. Skyriuje „Stack Space valdymas“ aprašomas vartotojo apibrėžtų funkcijų (UDR) kūrimas. Šiame straipsnyje pateikiama Papildoma informacija ir derinimo patarimai.

Toliau pateikta informacija taikoma nepriklausomai nuo to, ar UDR veikia vartotojo nustatytame virtualiame procesoriuje (VP), ar VP CPU. Gijos steką galima perkelti į vartotojo nustatytą virtualų procesorių prieš pat vykdant UDR.

Kokio dydžio krūva yra skirta UDR?

UDR galimo krūvos dydis priklauso nuo to, kaip UDR buvo sukurta:

    naudojant STACK modifikatorių, kuris leidžia UDR naudoti jam specialiai priskirtą steką,

    be STACK modifikatoriaus, o tai reiškia, kad UDR serverio paskirstytą krūvą bendrins su užklausą teikiančia gija. Šiuo atveju dėklo dydis bus nustatomas pagal parametro STACKSIZE reikšmę onconfig konfigūracijos faile.

STACK modifikatorius

Teiginiuose CREATE PROCEDURE arba CREATE FUNCTION yra pasirenkamas STACK modifikatorius, leidžiantis nurodyti krūvos vietos kiekį baitais, reikalingo UDR vykdyti.

Jei kurdami UDR naudosite STACK modifikatorių, serveris paskirs ir išskirs kamino vietą kiekvieną kartą, kai bus vykdomas UDR. Faktinis galimas dydis yra lygus STACK reikšmei baitais atėmus šiek tiek papildomų išlaidų, atsižvelgiant į funkcijos argumentų skaičių.

Jei STACK reikšmė yra mažesnė už parametrą STACKSIZE onconfig faile (žr. kitą skyrių), UDR priskirtas dėklo dydis bus automatiškai suapvalintas iki STACKSIZE reikšmės.

STACKSIZE konfigūracijos parametras

Onconfig konfigūracijos faile yra STACKSIZE parametras, kuris nurodo numatytąjį naudotojo gijų kamino dydį.

Jei kurdami UDR nenurodysite STACK, serveris neskiria papildomos dėklo vietos šiam UDR vykdyti. Vietoj to, UDR naudoja dėklo vietą, skirtą užklausai vykdyti. Galimas krūvos dydis priklausys nuo funkcijos vykdymo SQL lygiu pridėtinės vertės.

Vienai gijai skirtas krūvas skiriamas vieną kartą konkrečiai gijai, vykdančiai užklausą. Našumas yra geresnis, kai UDR dalijasi viena krūva su gija, nes serveris nešvaisto resursų skirdamas papildomą krūvą kiekvienam UDR iškvietimui. Kita vertus, jei UDR naudojamas krūvos dydis artėja prie STACKSIZE reikšmės, tai gali sukelti dėklo perpildymą, kai iškviečiama funkcija kaip sudėtingos užklausos dalis (tokiu atveju UDR vykdymui bus skirta mažiau dėklo vietos).

Atkreipkite dėmesį, kad neturėtumėte nustatyti per didelės STACKSIZE reikšmės, nes tai turės įtakos visoms vartotojo gijomis.

Kada reikia kontroliuoti krūvos dydį?

YTurite tvarkyti dėklo vietą, jei UDR atlieka pakartotinius skambučius arba jei UDR reikia daugiau krūvos vietos, nei pagal numatytuosius nustatymus yra užklausos gijos krūvoje (STACKSIZE).

Yra du būdai, kaip padidinti UDR vykdymo krūvą:

    Kurdami UDR nurodykite STACK modifikatorių.

    Naudokite mi_call() rekursiniams skambučiams atlikti (pavyzdį žr. Informix DataBlade API programuotojo vadove).

Jei nenurodysite dydžio naudodami STACK ir jei nenaudosite mi_call(), kad padidintumėte esamą krūvą, ir jei UDR padarys ką nors, kam reikia daug dėklo vietos, tai sukels dėklo perpildymą.

Atminkite, kad kai kurios mi_* funkcijos prideda naują dėklo segmentą. savo egzekuciją. Šie segmentai atlaisvinami grįžus į iškvietimo UDR funkciją.

Ką daryti, jei kažkas negerai?

Stack naudojimo stebėjimas

Stebėjimo tikslas – nustatyti konkretų UDR, sukeliantį dėklo perpildymą, kad galėtumėte pakeisti STACK reikšmę konkrečiai tam konkrečiam UDR.

    Stebėti dėklo naudojimą naudojant komandą "onstat -g sts".

    Sesijos, vykdančios SQL užklausą, stebėjimas naudojant "onstat -g ses session_id"

Po identifikavimo SQL užklausa kuris baigiasi dėklo perpildymu, turėtumėte nustatyti dėklo naudojimą atskirai vykdydami užklausas su UDR, kurios yra pradinės užklausos dalis.

Galite dinamiškai nustatyti UDR STACK reikšmę. Pavyzdžiui:

pakeisti funkciją MyFoo (lvarchar,lvarchar) su (add stack=131072);

Pakeitę STACK reikšmę, turėtumėte patikrinti pradinę užklausą, kad įsitikintumėte, jog ji dabar yra stabili.

Padidinti STACKSIZE

Arba pabandykite padidinti STACKSIZE reikšmę. Patikrinkite, ar tai išsprendžia problemą. (Nepamirškite vėliau grąžinti senosios vertės).

Jei STACKSIZE padidinimas nepadeda, greičiausiai problema yra atminties sugadinimas. Štai keletas pasiūlymų:

    Įgalinkite atminties rašymo ir atminties telkinio tikrinimą. Straipsnio „UDR atminties paskirstymas“ skyriuje „Derinimo problemos“ paaiškinama, kaip tai padaryti.

    Persvarstykite naudodami mi_lvarchar . Ypatingas dėmesys turėtų būti skiriamas vietoms, kur mi_lvarchar perduodama funkcijai, kuri tikisi gauti nulinę eilutę kaip argumentą.

    Sumažinkite procesoriaus (arba vartotojo) VP skaičių iki vieno, kad problema būtų atkurta greičiau.

mi_print_stack() -- Solaris

Informix Dynamic Server, skirta Solaris OS, apima funkciją mi_print_stack(), kurią galima iškviesti UDR. Pagal numatytuosius nustatymus ši funkcija išsaugo krūvos rėmelį šiame faile:

/tmp/default.stack

Negalite pakeisti išvesties failo pavadinimo, bet galite pakeisti jo vietą pakeisdami aplinkos kintamojo DBTEMP reikšmę. Įsitikinkite, kad $DBTEMP katalogą gali įrašyti informix vartotojas. Apie visas klaidas, aptiktas vykdant mi_print_stack(), pranešama $MSGPATH.

Ši funkcija galima tik OC Solaris.

Žodynėlis

Šiame straipsnyje vartojami terminai ir santrumpos:

UDRVartotojo nustatyta tvarka
V.P.Virtualus procesorius

2016-04-14 Versija 3.22 Pakeista sąsaja, ištaisytos klaidos perkeliant registrus, pakeista organizacijos perdavimo tvarka ir apskaitos politika. Platforma 8.3.7.2027 BP 3.0.43.174
2016-03-17 Versija 3.24 Pastebėtos klaidos ištaisytos. Platforma 8.3.8.1747 BP 3.0.43.241
2016-06-16 3.26 versija Pastebėtos klaidos ištaisytos. Platforma 8.3.8.2088 BP 3.0.44.123
2016-10-16 Versija 4.0.1.2 Fiksuotas vertės saugojimo perkėlimas, pakeista leidimų apskaitos politika 3.44.*. Platforma 8.3.9.1818 BP 3.0.44.164.
2017-04-19 Versija 4.0.2.7 Pakeistas su katalogais susietų registrų perdavimo algoritmas, ištaisytos pastebėtos klaidos, sutvarkytas perkėlimas su nuorodų perrašymu.
2017-05-29 Versija 4.0.4.5 Pakeistas judesių perkėlimas, pridėtas perduotų dokumentų judėjimų peržiūra, dar kažkas...
2017-05-30 Versija 4.0.4.6 Ištaisyta klaida pildant šaltinio esamų katalogų sąrašą (ačiū shoy)
2017-06-17 4.0.5.1 versija Pakeistas judesių perdavimo algoritmas.
2017-07-19 4.0.5.4 versija Pakeistas CI perkėlimas iš BP 2.0. Netikėtai perkėlimą iš UT 10.3 atliko Smilegm, šioje versijoje perkėlimas buvo šiek tiek pakoreguotas pagal šią situaciją)))
2017-08-10 4.0.5.5 versija Ištaisytos klaidos perkeliant iš BP 2.0
2017-09-19 Versija 4.4.5.7 Fiksuotas 3.0.52.* ryšio patikrinimas
2017-11-28 4.4.5.9 versija Ištaisytos klaidos, apie kurias pranešta
2017-12-06 Versija 5.2.0.4 Nuorodų paieškos algoritmas buvo perkurtas. Pridėtos perdavimo procedūros iš BP 1.6; nebėra griežto ryšio su BP - galite lengvai jį naudoti norėdami perkelti „beveik“ identiškų konfigūracijų duomenis. Pasistengsiu greitai ištaisyti visus komentarus.
2017-12-08 Versija 5.2.1.3 Pridėtas atlyginimų ataskaitų perkėlimo iš BP.2.0 į BP 3.0 algoritmas. Įtraukti pakeitimai, skirti dalytis tarp identiškų konfigūracijų.
2017-12-19 Versija 5.2.2.2 Pakoreguotas nepriklausomų informacijos registrų perdavimas žinynams, kurie yra šių registrų matmenyse.

2017-12-06 Nauja apdorojimo versija 5.2.0.4. Tarp reikšmingų pakeitimų yra galimybė perkelti iš BP 1,6 į BP 3,0. Pagrindinis pakeitimas yra katalogo nuorodų paieškos valdymas – į ankstesnės versijos paieška buvo atlikta pagal GUID, tačiau šioje versijoje galite įjungti paiešką „Pagal informaciją“:

2018-01-17 Versija 5.2.2.3 Ištaisyta – pastebėtos klaidos pavaldžiuose kataloguose ir periodinės informacijos registruose.

2018-07-19 Versija 5.2.2.8 Pastebėtos klaidos ištaisytos.

kuriame galite nustatyti bet kurio katalogo paieškos informaciją. Pats šis režimas „atsirado“ daugybe darbuotojų prašymų, tais atvejais, kai reikia keistis į jau esančią duomenų bazę, kurioje jau yra duomenų (pavyzdžiui, sujungti dviejų organizacijų apskaitos įrašus į vieną duomenų bazę).

2015-12-21 buvo išleista atitinkamai platforma 8.3.7.1805 ir BP 3.0.43.29 nauja versija apdorojimas 3.1:-) (aprašas žemiau). Naujas funkcionalumas – galimybė palyginti likučius ir apyvartas tarp dviejų BP duomenų bazių (visoms sąskaitoms, jei sąskaitų planai sutampa, arba atskiroms sutampančioms apskaitos sąskaitoms, su analitika arba be jos).
2016-01-03 Versija 3.5 - pakeistas prisijungimo prie šaltinio bazės mechanizmas - suderintas su BSP 2.3.2.43. Ištaisytos smulkios klaidos. Platforma 8.3.7.1845, BP 3.0.43.50
2016-02-16 3.6 versija – pridėta vėliavėlė „Nustatyti rankinį taisymą“ dokumentams, perkeliamiems su judesiais. Fiksuotas judėjimų perkėlimas – dokumentai, kurių data yra mažesnė nei laikotarpio pradžia, perduodami be judėjimų. Platforma 8.3.7.1917, BP 3.0.43.116
2016-03-22 Versija 3.10 – Pridėta vėliavėlė „Visada perrašyti nuorodas“, skirta privalomam nuorodų objektų perrašymui (perdavimo greitis gerokai sumažintas, bet kartais tai būtina). Pridėtas skirtukas „Parengimas“, kuriame galite konfigūruoti šaltinio ir paskirties sąskaitų planų atitiktį (tame pačiame lygyje kaip ir sąskaitų kodai) bei konstantų perkėlimą. Platforma 8.3.7.1970, BP 3.0.43.148

2016-04-03 Versija 3.11 Pakeistas šaltinyje esančių dokumentų sąrašo pildymas: pildomas judėjimais pagal sąskaitų planą, atliktas tiesiog laikotarpio nuorodomis, kaip ir // site/public/509628/

Apdorojimas skirtas duomenims perduoti bet kokiam laikotarpiui taip pat, kaip „MXL įkėlimas“ su ITS, tik nenaudojant XML, JSON ir kitų tarpinių failų – keitimasis iš duomenų bazės į duomenų bazę per COM. Senesnėse nei 3.10 versijose ryšys naudojamas naudojant BSP algoritmą, kuris numato comcntr.dll registraciją (jei OS „leidžia“), taip pat įvairius pranešimus, kai neįmanoma užmegzti ryšio, pavyzdys - „Informacinė bazė atnaujinama“ ir tt . Pridėtas patikrinimas, kaip imtuvą pasirinkti kaip IS šaltinį – pateikiamas įspėjimas.

Gali būti naudojamas:

1. Reguliavimo informacinės informacijos (RNI) perkėlimas iš IS šaltinio į IS paskirties vietą (visos informacinės informacijos perkėlimas vykdomas vartotojo pageidavimu, reikiamos žinynai ir pan. perduodami saitais bet kokių perdavimų metu).

2. Bet kurio pasirinkto laikotarpio dokumentų perdavimas.

3. Visos informacijos perkėlimas iš „sugedusios“ informacijos apsaugos sistemos, jei ji paleidžiama 1C:Enterprise režimu, o duomenų įkėlimas ar konfigūratoriaus paleidimas neįmanomas.

Apdorojimo ypatybė - imtuvo ir šaltinio informacijos saugumas gali skirtis; perkėlimas nuo 2.0 iki 3.0 - leidimai skiriasi, bet perdavimas veikia!!! Neatitinkančios detalės ignoruojamos arba joms turi būti nurodyti perdavimo algoritmai.

komentaras: Duomenų konvertavimas NENaudojamas! Ir neklausk kodel!!! Tiems, kurie ypač išrankūs - BP 3.0 keičiasi beveik kasdien, nebėra jėgų nuolat atnaujinti perkėlimo taisykles - čia viskas paprasčiau :-).

Kitas apdorojimo bruožas yra tai, kad jis paleidžiamas imtuvo informacijos saugoje (arčiausiai funkcionalumo analogai veikia atvirkščiai - nuo šaltinio iki imtuvo).

Darbo pradžia - reikia nurodyti apdorojimo laikotarpį, nurodyti organizaciją iš šaltinio, ji bus perkelta į paskirties vietą.

Perleidžiant organizaciją, perkeliamos apskaitos politikos ir „susijusios“ informacijos registrai. Todėl pirmą kartą pasirinkus organizaciją šaltinyje, praeis šiek tiek laiko, kol ji pasirodys imtuve.

Šaltinio ir paskirties sąskaitų planai turi būti vienodi, 2.* versijose skirtingos sąskaitos į paskirties vietą neperkeliamos, planuojama ateityje leisti koreguoti sutampančių sąskaitų ir analitikos priemones. Sąskaitos perkeliamos naudojant kodus, kurių nėra imtuve, NEGALIMA SUKURTI!!!

Likę objektai perduodami naudojant vidinius identifikatorius (GUID), todėl turėtumėte atkreipti dėmesį į kai kuriuos pagrindinius katalogus, pvz. - Valiutos.

Jei planuojate keistis su „švaria“ duomenų baze, geriau ištrinti katalogus, užpildytus pirmojo paleidimo metu prieš apsikeitimą. Kodėl apdorojamas puslapis, kuriame galite gauti šiuos katalogo elementus ir juos ištrinti. Bent jau turite pašalinti „įtrinti“ valiutą. - nes dubliavimas yra beveik neišvengiamas (iš esmės tai lengvai ištaisoma pasidalijus BP 3.0 įmontuotų dublikatų paieška ir pakeitimu).

Apdorojimas numato iškviesti puslapį katalogams ištrinti, kai atvira forma pradinis užpildymas:

Kai atidarysite apdorojimą, bus rodomas puslapis, skirtas ištrinti pradinio pildymo metu užpildytus katalogus:

Nuo 3.22 versijos sąsaja buvo pakeista, dabar visos parengiamosios operacijos yra skirtukuose ir visada pasiekiamos


Svarbu patikrinti šaltinio ir gavėjo sąskaitų plano atitikimą ir būtinai nurodyti sąskaitų atitikimą.

Nereikia ištrinti iš anksto nustatytų katalogo elementų – jie perduodami konfigūracijos identifikatoriais (ne GUID).

Perdavimui skirtus objektus galite pasirinkti naudodami pasirinkimo formą iš katalogų ir dokumentų (su šiais objektais susieti informaciniai registrai bus perkeliami automatiškai, todėl jų atskirai rinktis nereikės).Registrų perkėlimas, sumažinimas laikinai išjungtas - reikia sudaryti perkėlimo registrų sąrašą - kažkas turi būti perkelta, kažkas neturėtų, šiame etape pakanka to, kas perkeliama į žinynus, bus perkeliamų registrų sąrašas būsimų versijų šablone.

Keičiant su 2.0, kai kurios detalės (pvz. Kontaktinė informacija) perkeliamas pagal procese integruotą algoritmą, nes 2.0 ir 3.0 jie saugomi skirtingai. Panaši situacija yra ir su daugybe dokumentų (pavyzdžiui, skolų derinimo).

Objektų tipų sąrašas 3.22 versijoje gali būti pildomas skirtingai, tai yra submeniu, pakeitimai nurodyti paveikslėlyje:

Apdorojimo naudojimas yra supaprastintas - negalite pasirinkti mainų katalogų, o tiesiog užpildyti imtuvo tipų sąrašą tik tų tipų katalogais, kurių šaltinyje yra bent vienas įrašas.

Apdorojimas turi integruotą išdėstymą, kuriame pateikiami katalogai, kurių nereikia perkelti iš šaltinio į paskirties vietą (išdėstymas „Išskirti iš perdavimo“). Prie šio išdėstymo galite pridėti (pašalinti) bet kokius katalogus. Jei nereikia perkelti visų informacinių duomenų, užtenka perkelti dokumentus, kurių sąrašą taip pat galima gauti nepasirinkus tipų, tiesiog užpildykite visus pirminius dokumentus, dėl kurių yra vykdomos operacijos.

Numatytas dokumentų perkėlimas su judėjimais, keitimams nuo 3.0 iki 3.0 ir sąskaitų planų korespondencijai veikia vienas prieš vieną, keičiant 2.0 į 3.0 galimos klaidos, todėl rekomenduojama dokumentus perkelti be judesių, o tada tiesiog perkelkite juos į imtuvą. Perkeliant dokumentus su judesiais nustatoma žyma „Rankinis reguliavimas“.

Atributas „Paskelbta“ nustatomas gavėjo dokumentuose taip pat kaip ir šaltinyje, tačiau judėjimai (jei jie nebuvo perkelti) bus rodomi tik po to, kai dokumentai bus apdoroti, pavyzdžiui, naudojant BP 3.0 grupinio registravimo apdorojimą. dokumentus (rekomenduojama parinktis), arba iš šio apdorojimo (čia yra mygtukas „Paskelbti dokumentus“).

Jei tvarkymą planuojama naudoti nuolatiniam apsikeitimui, jį galima užregistruoti gavėjo informacijos sauga (mygtukas „Registruotis“). „Vienkartiniams“ pervedimams galite tiesiog naudoti naudodami Failas – Atidaryti.

2015-12-21 - 3.1 versija platforma 8.3.7.1805 ir maitinimo blokas 3.0.43.29 (2.15 versija, skirta 3.0.43.* neveikia - konfigūracija buvo gana daug pakeista).

Pakeista:

Ryšio parinkties pasirinkimo dialogo langas, Kliento-serverio vėliavėlė visada pasiekiama, priklausomai nuo jos nustatymo, pasirinkto failų duomenų bazės aplanko arba lauko su duomenų bazės pavadinimu serveryje ir paties serverio pavadinimu galima (pataisyta klaida dialogo lango versijoje 2.15)

- NAUJA FUNKCIONALUMAS: Įvairaus detalumo šaltinio ir gavėjo duomenų bazių likučių ir apyvartos suderinimo mechanizmas:


Manau, kad patikrinimo parinkčių pasirinkimas yra aiškus iš paveikslo:


Yra skirtumų naudojant ploną ir storą klientą – storajame kliente iškart parodomas failų palyginimo langas:


Plonajame kliente nesivarginau programiškai spausti mygtukus, siūlau paprastą palyginimo lango rodymo parinktį:


Palyginimas į plonas klientas, IMHO, patogiau, nes turi naršymo mygtukus skirtumams, o tai patogiau didelėms lentelėms nei slinkti pele:

2016-03-22 Versija 3.10 – Pridėta vėliavėlė „Visada perrašyti nuorodas“, skirta privalomam nuorodų objektų perrašymui (perdavimo greitis gerokai sumažintas, bet kartais tai būtina). Pridėtas skirtukas „Parengimas“, kuriame galite konfigūruoti šaltinio ir paskirties sąskaitų planų atitiktį (tame pačiame lygyje kaip ir sąskaitų kodai) bei konstantų perkėlimą. Platforma 8.3.7.1970, BP 3.0.43.148

- NAUJA FUNKCIONALUMAS: Prieš perduodant dokumentus, rekomenduojama patikrinti sąskaitų planą, ar šaltinio ir paskirties nuoseklumas, taip pat ar laikomasi nustatytų konstantų.

Šiuo tikslu buvo pridėtas skirtukas „Parengimas“, kuriame galite nustatyti šiuos atitikmenis:


Sąskaitų atitikimo lentelės pildymo algoritmas yra paprastas - analizuojama šaltinyje esanti apyvarta ir kiekvienai ten rastai sąskaitai randamas atitikmuo gavėje pagal kodą, jei atitikimo nerasta, eilutė su sąskaita. Lentelėje rodomas kodas, pagal kurį reikia pasirinkti gavėjo paskyrą, jis bus naudojamas pervedant. „Poke“ laikymasis nustatomas kodo lygiu.

Norint patikrinti ir perduoti nustatytų konstantų atitiktį, naudojama atitinkama lentelė:

Prireikus užpildome ir perkeliame. Perkeliamos tik vėliava pažymėtos konstantos...

Programų krūva yra speciali atminties sritis, organizuota pagal LIFO (Last in, first out) eilės principą. Pavadinimas „krūva“ kilęs iš jos konstravimo principo analogijos su lėkščių krūva – galima lėkštes dėti vieną ant kitos (įdėjimo į krūvą būdas „stumti“, „stumti“), o tada. nuimkite juos, pradedant nuo viršaus (vertės gavimo iš kamino metodas, "popping", "pop"). Programos dėklas taip pat vadinamas iškvietimų stekeliu, vykdymo stekeliu arba mašinų stekeliu (kad nebūtų supainioti su „stack“ – abstrakčia duomenų struktūra).

Kam skirtas kaminas? Tai leidžia patogiai organizuoti paprogramių iškvietimą. Kai funkcija iškviečiama, ji gauna tam tikrus argumentus; ji taip pat turi kažkur saugoti savo vietinius kintamuosius. Be to, turime atsižvelgti į tai, kad viena funkcija gali iškviesti kitą funkciją, kuri taip pat turi perduoti parametrus ir saugoti jos kintamuosius. Naudojant steką, perduodant parametrus tereikia juos sudėti į krūvą, tada iškviesta funkcija gali juos iš ten „iššokti“ ir panaudoti. Ten gali būti saugomi ir vietiniai kintamieji – savo kodo pradžioje funkcija paskiria dalį kamino atminties, o grįžus kontrolei ją išvalo ir išlaisvina. Aukšto lygio kalbų programuotojai apie tokius dalykus dažniausiai negalvoja – kompiliatorius jiems sugeneruoja visą reikalingą įprastą kodą.

Klaidos pasekmės

Dabar esame beveik arti problemos. Kalbant abstrakčiai, krūva yra begalinė parduotuvė, į kurią galima be galo pridėti naujų prekių. Deja, mūsų pasaulyje viskas yra baigtinė – ir kamino atmintis nėra išimtis. Kas atsitiks, jei jis baigiasi, kai funkcijos argumentai įstumiami į krūvą? Arba funkcija skiria atmintį savo kintamiesiems?

Atsiras klaida, vadinama dėklo perpildymu. Kadangi kamino reikia norint organizuoti vartotojo apibrėžtų funkcijų iškvietimą (ir beveik visos programos šiuolaikinėmis kalbomis, įskaitant ir objektines, vienaip ar kitaip sukurtos funkcijomis), jos nebegalės būti pašauktam. Todėl operacinė sistema perima valdymą, išvalo krūvą ir nutraukia programą. Čia galime pabrėžti skirtumą tarp dėklo perpildymo ir dėklo perpildymo – pirmuoju atveju įvyksta klaida pasiekiant neteisingą atminties sritį, o jei šiame etape nėra apsaugos, ji tuo momentu nepasireiškia – sėkmingai susijungus aplinkybėms, programa gali veikti normaliai. Jei buvo apsaugota tik pasiekiama atmintis, . Stacko atveju programa tikrai baigiasi.

Kad būtų visiškai tikslūs, reikia pažymėti, kad toks įvykių aprašymas tinka tik kompiliatoriams, kurie kompiliuoja pagal vietinį kodą. Valdomomis kalbomis Virtuali mašina yra valdomų programų krūva, kurios būseną stebėti daug lengviau, o įvykus perpildymui galite sau leisti padaryti išimtį programai. C ir C++ kalbomis negalite tikėtis tokios „prabangos“.

Klaidos priežastys

Kas gali sukelti tokią nemalonią situaciją? Remiantis aukščiau aprašytu mechanizmu, viena galimybė yra ta, kad yra per daug įdėtųjų funkcijų iškvietimų. Šis scenarijus ypač tikėtinas naudojant rekursiją. Begalinė rekursija (nesant tingaus vertinimo mechanizmo) tokiu būdu nutraukiama, skirtingai nei , kuri kartais būna naudinga programa. Tačiau, kai kaminui skiriamas nedidelis atminties kiekis (kas, pavyzdžiui, būdinga mikrovaldikliams), gali pakakti paprastos skambučių sekos.

Kitas variantas yra vietiniai kintamieji, kuriems reikia daug atminties. Turėti vietinį milijono elementų masyvą arba milijoną vietinių kintamųjų (niekada nežinai, kas atsitiks) nėra pati geriausia idėja. Net vienas tokios godžios funkcijos iškvietimas gali lengvai sukelti krūvos perpildymą. Norint gauti didelius duomenų kiekius, geriau naudoti dinaminius atminties mechanizmus, kurie leis išspręsti jos trūkumo klaidą.

Tačiau dinaminė atmintis yra gana lėta paskirstymo ir išskyrimo požiūriu (nes tai tvarko operacinė sistema), o su tiesiogine prieiga turite ją paskirstyti ir panaikinti rankiniu būdu. Atmintis dėtuvėje paskirstoma labai greitai (tiesą sakant, tereikia pakeisti vieno registro reikšmę), be to, dėtuve skirti objektai turi automatiškai iškviečiamus destruktorius, kai grįžta funkcijos valdymas ir dėklas išvalomas. Žinoma, iš karto kyla noras gauti atmintį iš kamino. Todėl trečiasis būdas perpildyti yra paties programuotojo atminties paskirstymas dėtuvėje. C biblioteka suteikia specialiai šiam tikslui skirtą funkciją. Įdomu pastebėti, kad jei dinaminės atminties malloc paskirstymo funkcija turi savo „dvynį“, skirtą ją atlaisvinti, free, tai funkcija alloca jo neturi - atmintis atlaisvinama automatiškai, grįžus funkcijos valdymui. Galbūt tai tik apsunkina situaciją – juk nepavyks atlaisvinti atminties prieš išeinant iš funkcijos. Nors, anot man puslapio, "alloca funkcija priklauso nuo mašinos ir kompiliatoriaus; daugelyje sistemų jos įgyvendinimas yra problemiškas ir klaidingas; jos naudojimas yra labai lengvas ir nerimtas" - ji vis dar naudojama.

Pavyzdžiai

Kaip pavyzdį pažvelkime į rekursinės failų paieškos kodą, esantį MSDN:

Void DirSearch(String* sDir) ( pabandykite ( // Raskite poaplankius aplanke, kuris perduotas. String* d = Directory::GetDirectories(sDir); int numDirs = d->get_Length(); for (int i= 0;i< numDirs; i++) { // Find all the files in the subfolder. String* f = Directory::GetFiles(d[i],textBox1->Tekstas); int numFiles = f->get_Length(); už (int j = 0; j< numFiles; j++) { listBox1->Elementai->Pridėti(f[j]); ) DirSearch(d[i]); ) ) sugauti (System::Exception* e) ( MessageBox::Show(e->Message); ) )

Ši funkcija gauna failų sąrašą nurodytame kataloge, o tada pati iškviečia tuos sąrašo elementus, kurie yra katalogai. Atitinkamai, su pakankamai giliu medžiu Failų sistema, gauname natūralų rezultatą.

Antrojo požiūrio pavyzdys, paimtas iš klausimo „Kodėl dėklas perpildomas? iš svetainės Stack Overflow (svetainė yra klausimų ir atsakymų rinkinys bet kuria programavimo tema, o ne tik Stack Overflow, kaip gali atrodyti):

#define W 1000 #define H 1000 #define MAX 100000 //... int main() ( int vaizdas; float dtr; initImg(image,dtr); return 0; )

Kaip matote, pagrindinė funkcija skiria atmintį kamino int ir float tipų masyvams, kurių kiekvienas turi milijoną elementų, o tai iš viso suteikia šiek tiek mažiau nei 8 megabaitus. Jei manote, kad pagal numatytuosius nustatymus „Visual C++“ kamino rezervuoja tik 1 megabaitą, atsakymas tampa akivaizdus.

Štai pavyzdys, paimtas iš Lightspark Flash grotuvo projekto GitHub saugyklos:

DefineSoundTag::DefineSoundTag(/* ... */) ( // ... unsigned int soundDataLength = h.getLength()-7; unsigned char *tmp = (nesigned char *)alloca(soundDataLength); // .. .)

Galite tikėtis, kad h.getLength()-7 nėra per didelis skaičius, kad kitoje eilutėje nebūtų perpildymo. Bet ar sutaupytas laikas paskirstant atmintį vertas „galimo“ programos gedimo?

Apatinė eilutė

Stack overflow yra lemtinga klaida, kuri dažniausiai paveikia programas, kuriose yra rekursines funkcijas. Tačiau net jei programoje tokių funkcijų nėra, perpildymas vis tiek galimas dėl didelio vietinių kintamųjų dydžio arba klaidų rankiniu būdu paskirstant atmintį krūvoje. Galioja visos klasikinės taisyklės: jei yra pasirinkimas, geriau rinktis iteraciją, o ne rekursiją, taip pat nedirbti rankinio darbo vietoje kompiliatoriaus.

Bibliografija

  • E. Tanenbaumas. Kompiuterio architektūra.
  • Vikipedija. Kamino perpildymas.
  • Stack Overflow. Stack overflow C++.

Šis straipsnis dar kartą parodo, kad bet koks saugumo priemonių rinkinys turi apimti visus įgyvendinimo etapus: kūrimą, diegimą, sistemos administravimą ir, žinoma, organizacines priemones. Informacinėse sistemose „žmogiškasis faktorius“ (įskaitant vartotojus) yra pagrindinė grėsmė saugumui. Šis priemonių rinkinys turi būti pagrįstas ir subalansuotas: nėra prasmės ir mažai tikėtina, kad bus skirta pakankamai lėšų apsaugai, kuri viršija pačių duomenų kainą, organizuoti.

Įvadas

1C:Enterprise yra labiausiai paplitusi apskaitos sistema Rusijoje, tačiau nepaisant to, iki 8.0 versijos jos kūrėjai labai mažai dėmesio skyrė saugumo klausimams. Iš esmės tai, žinoma, padiktavo produkto kainų niša ir orientacija į smulkųjį verslą, kur nėra kvalifikuotų IT specialistų, o galimos saugios sistemos diegimo ir priežiūros išlaidos įmonei kainuotų pernelyg brangiai. Išleidus 8.0 versiją, akcentai turėjo pasikeisti: ženkliai išaugo sprendimų kaina, sistema tapo daug labiau keičiamo mastelio ir lankstesnė – labai pasikeitė reikalavimai. Ar sistema tapo pakankamai patikima ir saugi – labai individualus klausimas. Pagrindinė šiuolaikinės įmonės informacinė sistema turi atitikti bent šiuos saugumo reikalavimus:

  • Gana maža sistemos gedimo dėl vidinių priežasčių tikimybė.
  • Patikimas vartotojo autorizavimas ir duomenų apsauga nuo neteisingų veiksmų.
  • Veiksminga vartotojo teisių priskyrimo sistema.
  • Operacinė sistema atsarginė kopija ir atkūrimas gedimo atveju.

Ar sprendimai, pagrįsti 1C:Enterprise 8.0, atitinka šiuos reikalavimus? Nėra aiškaus atsakymo. Nepaisant reikšmingų patekimo kontrolės sistemos pokyčių, liko daug neišspręstų problemų. Priklausomai nuo to, kaip sistema suprojektuota ir sukonfigūruota, visi šie reikalavimai gali būti neįvykdyti arba pakankamai patenkinti tam tikram diegimui, tačiau verta atkreipti dėmesį (o tai yra reikšminga platformos „jaunystės“ pasekmė ), kad norint visapusiškai įvykdyti išvardytas sąlygas, būtina dėti tikrai Heraklio pastangas.

Šis straipsnis skirtas sprendimų kūrėjams ir diegėjams platformoje 1C:Enterprise, taip pat sistemos administratoriai organizacijose, kuriose naudojamas 1C:Enterprise, ir aprašomi kai kurie sistemos kliento-serverio versijos kūrimo ir konfigūravimo aspektai organizacijos požiūriu. informacijos saugumas. Šis straipsnis negali būti naudojamas kaip dokumentacijos pakaitalas, o tik nurodo kai kuriuos dalykus, kurie jame dar nebuvo atspindėti. Ir, žinoma, nei šis straipsnis, nei visa dokumentacija neatspindės saugaus saugumo kūrimo problemos sudėtingumo. informacinė sistema, kuris vienu metu turi atitikti prieštaringus saugos, našumo, patogumo ir funkcionalumo reikalavimus.

Klasifikacija ir terminija

Pagrindinė straipsnyje aptariama tema yra informacinės grėsmės.

Informacinė grėsmė– situacijos, kai duomenys bus nuskaitomi, kopijuojami, keičiami ar blokuojami be leidimo, galimybė.

Ir, remiantis šis apibrėžimas, straipsnyje informacinės grėsmės klasifikuojamos taip:

  • Neleistinas duomenų sunaikinimas
  • Neleistinas duomenų pakeitimas
  • Neteisėtas duomenų kopijavimas
  • Neteisėtas duomenų skaitymas
  • Duomenų neprieinamumas

Visi grasinimai skirstomi į tyčinius ir netyčinius. Mes vadinsime realizuota informacine grėsme incidentas. Sistemos ypatybės yra šios:

Pažeidžiamumas– ypatybės, sukeliančios incidentus Apsaugos priemonės– funkcijos, kurios blokuoja incidento galimybę

Iš esmės nagrinėjami tik tie atvejai, kurių tikimybę lemia technologinės platformos 1C: Enterprise 8.0 naudojimas kliento-serverio versijoje (be to, tais atvejais, kai tai neprieštarauja tiesiog 1C ar 1C 8.0 reikšmei) . Apibrėžkime šiuos pagrindinius vaidmenis, susijusius su sistemos naudojimu:

  • Operatoriai– vartotojai, kurie turi teises peržiūrėti ir keisti duomenis, apribotus taikomosios programos vaidmeniu, bet neturintys administravimo funkcijų
  • Sistemos administratoriai– vartotojai, turintys sistemoje administravimo teises, įskaitant administravimo teises programų serverio ir MS SQL serverio operacinėse sistemose, administratoriaus teises MS SQL ir kt.
  • Informacijos saugumo administratoriai– vartotojai, kuriems yra deleguotos tam tikros administracinės funkcijos 1C informacijos bazėje (pvz., vartotojų įtraukimas, testavimas ir taisymas, atsarginė kopija, nustatymas taikymo sprendimas ir taip toliau.)
  • Sistemos kūrėjai– vartotojai, kuriantys taikomųjų programų sprendimą. Paprastai jie gali neturėti prieigos prie veikiančios sistemos.
  • Asmenys, neturintys tiesioginės prieigos prie sistemos– vartotojai, kuriems nėra deleguotos teisės pasiekti 1C, bet kurie gali vienaip ar kitaip paveikti sistemos veikimą (dažniausiai tai visi to paties domeno vartotojai Active Directory kurioje sistema įdiegta). Ši kategorija visų pirma skirta potencialiai pavojingiems subjektams sistemoje nustatyti.
  • Automatizuoti administraciniai scenarijai– programos, kurioms deleguotos tam tikros funkcijos, skirtos automatinis vykdymas kai kurie veiksmai (pvz., duomenų importavimas-eksportavimas)

Čia reikėtų atkreipti dėmesį į du dalykus: pirma, ši klasifikacija yra labai grubi ir neatsižvelgiama į pasidalijimą kiekvienoje grupėje – toks skirstymas bus kuriamas tam tikrais konkrečiais atvejais, antra, daroma prielaida, kad kiti asmenys negali daryti įtakos operacijai. sistemos, kuri turi būti teikiama priemonėmis, kurios nėra 1C.

Bet kuri apsaugos sistema turi būti sukurta atsižvelgiant į galimybes ir nuosavybės išlaidas. Apskritai kuriant ir diegiant informacinę sistemą būtina, kad sistemos apsaugos kaina atitiktų:

  • saugomos informacijos vertė;
  • incidento sukūrimo išlaidos (tyčinio grasinimo atveju);
  • finansinė rizika incidento atveju

Beprasmiška ir žalinga organizuoti gynybą, kuri kainuoja daug brangiau nei vertinti jos finansinį efektyvumą. Yra keletas informacijos praradimo rizikos įvertinimo metodų, tačiau jie nėra aptariami šiame straipsnyje. Kitas svarbus aspektas – dažnai vienas kitam prieštaraujančių reikalavimų, keliamų informacijos saugumui, sistemos našumui, darbo su sistema patogumui ir paprastumui, kūrimo ir diegimo greičio bei kitų įmonių informacinėms sistemoms keliamų reikalavimų pusiausvyros išlaikymas.

Pagrindinės sistemos informacijos apsaugos mechanizmo ypatybės

1C:Enterprise 8.0 yra dviejų versijų: failo ir kliento-serverio. Failo versija negali būti laikoma užtikrinančia sistemos informacijos saugumą dėl šių priežasčių:

  • Duomenys ir konfigūracija saugomi faile, kurį gali skaityti ir įrašyti visi sistemos vartotojai.
  • Kaip bus parodyta toliau, sistemos autorizacija labai lengvai apeinama.
  • Sistemos vientisumą užtikrina tik kliento dalies branduolys.

Kliento-serverio versijoje informacijai saugoti naudojamas MS SQL Server, kuris suteikia:

  • Patikimesnis duomenų saugojimas.
  • Failų išskyrimas nuo tiesioginės prieigos.
  • Pažangesni operacijų ir užrakinimo mechanizmai.

Nepaisant didelių skirtumų tarp failo ir kliento-serverio sistemos versijų, jos turi vieningą prieigos valdymo schemą programų sprendimo lygmenyje, kuri suteikia šias galimybes:

  • Vartotojo autorizacija naudojant slaptažodį, nurodytą 1C.
  • Vartotojo įgaliojimas, pagrįstas dabartiniu „Windows“ vartotoju.
  • Vaidmenų priskyrimas sistemos vartotojams.
  • Administracinių funkcijų ribojimas pagal vaidmenį.
  • Galimų sąsajų priskyrimas pagal vaidmenis.
  • Prieigos prie metaduomenų objektų ribojimas pagal vaidmenį.
  • Prieigos prie objekto informacijos ribojimas pagal vaidmenį.
  • Prieigos prie duomenų objektų ribojimas pagal vaidmenis ir seanso parametrus.
  • Interaktyvios prieigos prie duomenų ir vykdomųjų modulių ribojimas.
  • Kai kurie kodo vykdymo apribojimai.

Apskritai naudojama duomenų prieigos schema yra gana tipiška tokio lygio informacinėms sistemoms. Tačiau, kalbant apie trijų pakopų kliento-serverio architektūros įgyvendinimą, yra keletas pagrindinių aspektų, dėl kurių atsiranda gana daug pažeidžiamumų:

  1. Daug duomenų apdorojimo etapų ir kiekviename etape gali būti taikomos skirtingos prieigos prie objektų taisyklės.

    Kiek supaprastinta saugumo požiūriu reikšmingų duomenų apdorojimo etapų schema parodyta 1 pav. Bendra 1C taisyklė yra sumažinti apribojimus, kai pereinate prie šios schemos, todėl pažeidžiamumo naudojimas viename iš viršutinių lygių gali sutrikdyti sistemos veikimą visais lygiais.

  2. Nepakankamai nustatytos perduodamų duomenų stebėjimo procedūros pereinant iš vieno lygio į kitą.

    Deja, ne visi vidiniai sistemos mechanizmai yra tobulai derinami, ypač neinteraktyviems mechanizmams, kurių derinimas iš vienos pusės visada yra daug darbo reikalaujantis, bet iš kitos pusės atsakingesnis. Ši „liga“ nėra išskirtinai 1C problema; ji randama daugelyje serverių produktų iš daugelio pardavėjų. Tik pastaraisiais metais dėmesys šioms problemoms gerokai išaugo.

  3. Nepakankamai aukšta vidutinė kūrėjų ir sistemų administratorių kvalifikacija, paveldėta iš ankstesnės versijos.

    „1C:Enterprise“ linijos produktai iš pradžių buvo orientuoti į lengvą kūrimą ir palaikymą bei darbą mažose organizacijose, todėl nenuostabu, kad istoriškai susiklostė, kad nemaža dalis programų sprendimų „kūrėjų“ ir „administratorių“ sistemos neturi pakankamai žinių ir įgūdžių dirbti su daug sudėtingesniu produktu, kuris yra 8.0 versija. Problemą apsunkina franšizės gavėjų priimta praktika treniruotis „kovojant“ klientų sąskaita, sistemingai nesiartinant. Ši problema. Reikia pagerbti 1C bendrovę, kad per pastaruosius kelerius metus ši situacija buvo palaipsniui taisoma: rimtos franšizės gavėjos įmonės pradėjo atsakingiau žiūrėti į personalo atrankos ir mokymo problemą, informacinių technologijų paramos lygį nuo 1C įmonė žymiai išaugo, atsirado sertifikavimo programos, skirtos aukštam aptarnavimo lygiui; tačiau situacijos negalima ištaisyti akimirksniu, todėl į šį veiksnį reikia atsižvelgti analizuojant sistemos saugumą.

  4. Platforma yra palyginti jauna.

    Tarp panašaus dėmesio ir paskirties produktų tai yra vienas iš jauniausių sprendimų. Platformos funkcionalumas buvo daugiau ar mažiau nustatytas mažiau nei prieš metus. Tuo pačiu kiekviena platformos versija, pradedant nuo 8.0.10 (būtent šioje laidoje buvo įdiegtos beveik visos dabartinės sistemos galimybės) tapo žymiai stabilesnė nei ankstesnės. Standartinių taikomųjų programų sprendimų funkcionalumas vis dar auga šuoliais, nors išnaudojama tik pusė platformos galimybių. Žinoma, tokiomis sąlygomis apie stabilumą galima kalbėti gana sąlygiškai, tačiau apskritai reikia pripažinti, kad 1C 8.0 platformos sprendimai daugeliu atžvilgių gerokai lenkia funkcionalumu ir našumu (o dažnai ir stabilumu) nei panašių sprendimų 1C. 7.7 platforma.

Taigi, sistema (ir, galbūt, standartinis programos sprendimas) yra įdiegta įmonėje ir įdiegta kompiuteriuose. Visų pirma, būtina sukurti aplinką, kurioje būtų prasminga nustatyti 1C saugumą, ir tam ji turi būti sukonfigūruota taip, kad būtų įvykdyta prielaida, kad sistemos saugumui didelę įtaką daro sistemos nustatymai.

Laikykitės bendrųjų apsaugos nustatymo taisyklių.

Apie jokį sistemos informacijos saugumą negali būti nė kalbos, jei nesilaikoma pagrindinių saugių sistemų kūrimo principų. Būtinai įsitikinkite, kad tenkinamos bent šios sąlygos:

  • Prieiga prie serverių yra fiziškai apribota ir užtikrinamas nepertraukiamas jų veikimas:
    • serverio įranga atitinka patikimumo reikalavimus, pakoreguotas sugedusios serverio įrangos keitimas, ypač kritinėms sritims naudojamos schemos su techninės įrangos dubliavimu (RAID, maitinimas iš kelių šaltinių, keli ryšio kanalai ir kt.);
    • serveriai yra rakinamoje patalpoje, o ši patalpa atidaroma tik nuotoliniu būdu negalimų atlikti darbų laikui;
    • Serverio patalpą turi teisę atidaryti tik vienas ar du asmenys, ekstremalios situacijos atveju sukurta atsakingų asmenų informavimo sistema;
    • užtikrinamas nepertraukiamas serverių maitinimas
    • užtikrinamos normalios įrangos klimato darbo sąlygos;
    • serverių patalpoje yra priešgaisrinė signalizacija, nėra pavojaus užtvindyti (ypač pirmam ir paskutiniam aukštams);
  • Įmonės tinklo ir informacinės infrastruktūros nustatymai atlikti teisingai:
    • Visuose serveriuose įdiegtos ir sukonfigūruotos ugniasienės;
    • visi vartotojai ir kompiuteriai yra įgalioti tinkle, slaptažodžiai yra pakankamai sudėtingi, kad jų negalima atspėti;
    • sistemos operatoriai turi pakankamai teisių normaliai su juo dirbti, bet neturi teisės į administracinius veiksmus;
    • antivirusinės priemonės įdiegtos ir įjungtos visuose tinklo kompiuteriuose;
    • Pageidautina, kad vartotojai (išskyrus tinklo administratorius) neturėtų administravimo teisių kliento darbo vietose;
    • prieiga prie interneto ir nuimama laikmena informacija turėtų būti reguliuojama ir ribojama;
    • turi būti sukonfigūruotas saugos įvykių sistemos auditas;
  • Išspręstos pagrindinės organizacinės problemos:
    • vartotojai turi pakankamai kvalifikacijos dirbti su 1C ir technine įranga;
    • naudotojai įspėjami apie atsakomybę už eksploatavimo taisyklių pažeidimą;
    • paskirta finansiškai atsakinga už kiekvieną materialus elementas informacinė sistema;
    • Visi sistemos vienetai sandarus ir uždarytas;
    • Ypatingą dėmesį atkreipkite į valytojų, statybininkų ir elektrikų instruktavimą ir priežiūrą. Šie asmenys dėl neatsargumo gali padaryti žalą, kuri neprilygsta nesąžiningo sistemos naudotojo tyčinei žalai.

Dėmesio!Šis sąrašas nėra baigtinis, o tik aprašo tai, kas dažnai praleidžiama diegiant bet kokią gana sudėtingą ir brangią informacinę sistemą!

  • MS SQL serveris, programų serveris ir kliento dalis veikia skirtinguose kompiuteriuose, serverio programos veikia pagal specialiai sukurtų Windows vartotojų teises;
  • Skirta MS SQL serveriui
    • nustatytas mišrus autorizacijos režimas
    • MS SQL vartotojai, įtraukti į serverio administratoriaus vaidmenį, nedalyvauja 1C darbe,
    • kiekvienam IB 1C buvo sukurtas atskiras MS SQL vartotojas, kuris neturi privilegijuotos prieigos prie serverio,
    • Vienos IS MS SQL vartotojas neturi prieigos prie kitos IS;
  • Vartotojai neturi tiesioginės prieigos prie programų serverio ir MS SQL serverio failų
  • Operatoriaus darbo vietose yra „Windows 2000/XP“ (ne „Windows 95/98/Me“)

Nepaisykite sistemos kūrėjų rekomendacijų ir skaitykite dokumentaciją. ITS diskuose skyriuje " Gairės Skelbiama svarbi medžiaga apie sistemos nustatymą. Atkreipkite ypatingą dėmesį į šiuos straipsnius:

  1. Programų, veikiančių su 1C:Enterprise serveriu, ypatybės
  2. Duomenų talpinimas 1C:Enterprise 8.0
  3. Vartotojai atnaujina 1C:Enterprise 8.0 Microsoft Windows be administratoriaus teisių
  4. Vartotojų sąrašo redagavimas administratoriaus teisių neturinčio vartotojo vardu
  5. Nustatymai Windows ugniasienė XP SP2, skirtas paleisti SQL Server 2000 ir SQL Server Desktop Engine (MSDE)
  6. COM+ Windows XP SP2 parametrų konfigūravimas, norint paleisti 1C:Enterprise 8.0 serverį
  7. Windows XP SP2 ugniasienės nustatymų konfigūravimas 1C:Enterprise 8.0 serveriui
  8. Windows XP SP2 ugniasienės nustatymų konfigūravimas HASP licencijų tvarkytuvėje
  9. Atsarginės kopijos kūrimas informacinė bazė naudojant SQL Serveris 2000
  10. Diegimo ir konfigūravimo problemos 1C:Enterprise 8.0 „kliento-serverio“ versijoje(vienas iš svarbiausių straipsnių)
  11. Ypatumai „Windows“ nustatymai Server 2003 diegiant 1C:Enterprise 8.0 serverį
  12. Vartotojo prieigos prie informacijos bazės reguliavimas kliento-serverio versijoje(vienas iš svarbiausių straipsnių)
  13. Serveris 1C: įmonė ir SQL serveris
  14. Išsami 1C:Enterprise 8.0 diegimo procedūra „kliento-serverio“ versijoje(vienas iš svarbiausių straipsnių)
  15. 1C:Enterprise serverio integruotos kalbos naudojimas

Tačiau skaitydami dokumentaciją būkite kritiški dėl gautos informacijos, pavyzdžiui, straipsnyje „1C: Enterprise 8.0 diegimo ir konfigūravimo problemos kliento-serverio versijoje“ nėra tiksliai aprašytos teisės, reikalingos vartotojui USER1CV8SERVER. Toliau bus pateiktos nuorodos į sąrašą, pavyzdžiui, [ITS1] reiškia straipsnį „Programų, veikiančių su 1C:Enterprise serveriu, funkcijos“. Visos nuorodos į straipsnius yra pateiktos naujausiame ITS numeryje rašymo metu (2006 m. sausio mėn.)

Naudokite autorizavimo galimybes kartu su Windows autorizacija vartotojams

Iš dviejų galimų vartotojo autorizacijos režimų: įmontuoto 1C ir kartu su Windows OS autorizavimu, jei įmanoma, turėtumėte pasirinkti kombinuotą autorizaciją. Tai leis vartotojams nepainioti su keliais slaptažodžiais dirbant, tačiau nesumažins sistemos saugumo lygio. Tačiau net ir tiems vartotojams, kurie naudoja tik „Windows“ įgaliojimą, labai patartina nustatyti slaptažodį kuriant ir tik po to išjungti 1C autorizaciją duotam vartotojui. Norint užtikrinti sistemos atkūrimą sunaikinus Active Directory struktūrą, būtina palikti bent vieną vartotoją, kuris gali prisijungti prie sistemos naudodamas 1C autorizaciją.

Kurdami programos sprendimo vaidmenis, nepridėkite teisių į rezervą

Kiekvienas programos sprendimo vaidmuo turi atspindėti minimalų reikalingą teisių rinkinį, kad būtų galima atlikti šio vaidmens apibrėžtus veiksmus. Tačiau kai kurie vaidmenys negali būti naudojami atskirai. Pavyzdžiui, interaktyviam paleidimui išoriniai gydymo būdai Galite sukurti atskirą vaidmenį ir pridėti jį prie visų vartotojų, kuriems reikia naudoti išorinį apdorojimą.

Reguliariai peržiūrėkite žurnalus ir sistemos veikimo protokolus

Jei įmanoma, reguliuokite ir automatizuokite žurnalų ir sistemos veikimo protokolų peržiūrą. Tinkamai sukonfigūravus ir reguliariai peržiūrint žurnalus (filtruojant tik pagal svarbius įvykius), galima anksti aptikti neteisėtus veiksmus arba netgi užkirsti jiems kelią pasiruošimo etape.

Kai kurios kliento-serverio versijos funkcijos

Šiame skyriuje aprašomos kai kurios kliento-serverio parinkties veikimo funkcijos ir jų poveikis saugumui. Kad būtų lengviau skaityti, naudojami šie užrašai:

Dėmesio! pažeidžiamumo aprašymas

Saugoma informacija, kuri kontroliuoja prieigą prie sistemos

Informacijos saugos vartotojų sąrašo saugojimas

Visa informacija apie šios informacijos saugos vartotojų sąrašą ir jame jiems prieinamus vaidmenis yra saugoma MS SQL duomenų bazės Params lentelėje (žr. [ITS2]). Žvelgiant į šios lentelės struktūrą ir turinį, tampa akivaizdu, kad visa vartotojo informacija yra saugoma įraše su FileName lauko reikšme "users.usr".

Kadangi darome prielaidą, kad vartotojai neturi prieigos prie MS SQL duomenų bazės, užpuolikas negali pasinaudoti šiuo faktu, tačiau, jei įmanoma vykdyti kodą MS SQL, tai „atveria duris“ gauti bet kurį (! ) prieiga iš 1C. Tas pats mechanizmas (su nedideliais pakeitimais) gali būti naudojamas ir sistemos failo versijoje, kuri, atsižvelgiant į failo versijos ypatybes, visiškai atmeta jo pritaikymą kuriant saugias sistemas.

Rekomendacija:Šiuo metu nėra galimybės visiškai apsaugoti programą nuo tokių pakeitimų, išskyrus trigerių naudojimą MS SQL Server lygiu, kuris, kita vertus, gali sukelti problemų atnaujinant platformos versiją ar keičiant sąrašą vartotojų. Norėdami sekti tokius pakeitimus, galite naudoti 1C žurnalą (atkreipti dėmesį į „įtartinus“ prisijungimus konfigūratoriaus režimu, nenurodant vartotojo) arba nuolat veikti „SQL Profiler“ (tai labai neigiamai paveiks sistemos veikimą) arba sukonfigūruoti įspėjimus. mechanizmas (greičiausiai kartu naudojant trigerius)

Informacijos apie IS sąrašą saugojimas serveryje

Kiekvienam 1C taikomųjų programų serveriui saugoma informacija apie prie jo prijungtų MS SQL duomenų bazių sąrašą. Kiekviena informacinė bazė, kad veiktų, naudoja savo ryšio eilutę iš programų serverio ir MS SQL serverio. Informacija apie informacijos bazes, registruotas taikomųjų programų serveryje, kartu su ryšio eilutėmis yra saugoma faile srvrib.lst, kuris yra serverio kataloge<Общие данные приложений>/1C/1Cv8 (pavyzdžiui, C:/Documents and Settings/All Users/Application Data/1C/1Cv8/srvrib.lst). Kiekvienai informacijos apsaugos sistemai išsaugoma visa ryšio eilutė, įskaitant MS SQL vartotojo slaptažodį, kai naudojamas mišrus MS SQL autorizacijos modelis. Būtent šio failo buvimas leidžia bijoti neteisėtos prieigos prie MS SQL duomenų bazės ir jei, priešingai rekomendacijoms, privilegijuotas vartotojas (pavyzdžiui, „sa“) yra naudojamas pasiekti bent vieną duomenų bazę, tada Be grėsmės vienai informacijos saugumui, kyla grėsmė visai sistemai naudojant MS SQL.

Įdomu pastebėti, kad naudojant mišrų autorizavimą ir „Windows“ autorizaciją MS SQL serveryje kyla įvairių problemų, kai gaunama prieiga prie nurodyto failo. Taigi pagrindinės neigiamos „Windows“ prieigos teisės savybės bus:

  • Visos informacijos saugos veikimas programų serveryje ir MS SQL serveryje pagal vieną teisių rinkinį (greičiausiai perteklinis)
  • Iš 1C taikomųjų programų serverio proceso (arba apskritai iš vartotojo USER1CV8SERVER ar jo ekvivalento), nenurodydami slaptažodžio, galite lengvai prisijungti prie bet kokios informacijos apsaugos nenurodydami slaptažodžio.

Kita vertus, užpuolikui gali būti sunkiau gauti galimybę vykdyti savavališką kodą iš vartotojo konteksto USER1CV8SERVER, nei gauti nurodytą failą. Beje, tokio failo buvimas yra dar vienas argumentas paskirstyti serverio funkcijas skirtinguose kompiuteriuose.

Rekomendacija: Failas srvrib.lst turėtų būti pasiekiamas tik serverio procesui. Būtinai sukonfigūruokite auditą, kad pakeistumėte šį failą.

Deja, pagal nutylėjimą šį failą beveik neapsaugotas nuo skaitymo, į kurį reikia atsižvelgti diegiant sistemą. Idealus variantas būtų, kad taikomųjų programų serveris neleistų skaityti ir rašyti šio failo veikiant (įskaitant skaitymą ir rašymą šiame serveryje veikiančiais vartotojo ryšiais).

Prieigos trūkumas kuriant informacijos apsaugą serveryje

Dėmesio! Autorizacijos klaidos trūkumas buvo ištaisytas platformos 1C: Enterprise 8.0.14 versijoje. Šioje laidoje pasirodė „1C:Enterprise Server Administrator“ sąvoka, tačiau kol serveryje nurodytas administratorių sąrašas, sistema veikia taip, kaip aprašyta toliau, todėl nepamirškite šios galimos funkcijos.

Turbūt didžiausias pažeidžiamumas šį skyrių yra galimybė beveik neribotai pridėti informacijos saugumo prie programų serverio, ko pasekoje bet kuris vartotojas, turintis prieigą prie programos serverio, automatiškai gauna galimybę paleisti savavališką kodą programų serveryje. Pažvelkime į tai su pavyzdžiu.

Sistema turi būti įdiegta taip

  • MS SQL Server 2000 (pvz. tinklo pavadinimas SRV1)
  • Serveris 1C: Enterprise 8.0 (tinklo pavadinimas SRV2)
  • 1C kliento dalis: „Enterprise 8.0“ (tinklo pavadinimas WS)

Daroma prielaida, kad vartotojas (toliau – VARTOTOJAS), dirbantis WS, turi bent minimalią prieigą prie vienos iš SRV2 registruotų informacijos saugos sistemų, tačiau neturi privilegijuotos prieigos prie SRV1 ir SRV2. Apskritai išvardytų kompiuterių funkcijų derinys neturi įtakos situacijai. Sistema buvo sukonfigūruota atsižvelgiant į rekomendacijas dokumentacijoje ir ITS diskuose. Situacija parodyta fig. 2.


  • sukonfigūruoti COM+ apsaugą programų serveryje, kad tik 1C vartotojai turėtų teisę prisijungti prie taikomųjų programų serverio proceso (daugiau informacijos [ITS12]);
  • srvrib.lst failas turi būti tik skaitomas vartotojui USER1CV8SERVER (norint pridėti naują informacijos apsaugą prie serverio, laikinai leisti rašyti);
  • Norėdami prisijungti prie MS SQL, naudokite tik TCP/IP protokolą, šiuo atveju galite:
    • apriboti ryšius naudojant ugniasienę;
    • sukonfigūruokite nestandartinio TCP prievado naudojimą, kuris apsunkins „pašalinių“ IB 1C ryšį;
    • naudoti perduodamų duomenų tarp taikomųjų programų serverio ir SQL serverio šifravimą;
  • sukonfigūruoti serverio užkardą taip, kad būtų neįmanoma naudoti trečiųjų šalių MS SQL serverių;
  • naudokite intraneto saugos įrankius, kad išvengtumėte neleistino kompiuterio atsiradimo vietinis tinklas(IPSec, grupės saugumo politika, ugniasienės ir kt.);
  • Jokiomis aplinkybėmis nesuteikite vartotojui USER1CV8SERVER administravimo teisių taikomųjų programų serveryje.

Serveryje veikiančio kodo naudojimas

Naudodamas 1C kliento-serverio versiją, kūrėjas gali paskirstyti kodo vykdymą tarp kliento ir programų serverio. Kad kodas (procedūra ar funkcija) būtų vykdomas tik serveryje, būtina jį įdėti į bendrą modulį, kuriam nustatyta savybė „Serveris“ ir tuo atveju, kai modulio vykdymas leidžiamas ne tik serveryje, įdėkite kodą į apribotą skyrių „#If Server“:

#Jei serveris Tada
Funkcija OnServer(Param1, Param2 = 0) Eksportuoti // Ši funkcija, nepaisant jos paprastumo, vykdoma serveryje
Param1 = Param1 + 12;
Grąžinti Param1;
EndFunction
#EndIf

Naudodami serveryje veikiantį kodą, turite atsižvelgti į tai, kad:

  • kodas veikia su USER1CV8SERVER teisėmis taikomųjų programų serveryje (yra COM objektai ir serverio failai);
  • visas vartotojo sesijas vykdo vienas paslaugos egzempliorius, todėl, pavyzdžiui, dėl dėklo perpildymo serveryje visi aktyvūs vartotojai atsijungs;
  • serverio modulių derinimas yra sudėtingas (pavyzdžiui, derinimo priemonėje negalite nustatyti pertraukos taško), bet tai reikia padaryti;
  • valdymo perkėlimas iš kliento į taikomųjų programų serverį ir atgal gali pareikalauti didelių išteklių ir didelių perduotų parametrų kiekių;
  • interaktyvių įrankių (formų, skaičiuoklės dokumentai, dialogo langai), išorinės ataskaitos ir apdorojimas kode programų serveryje yra neįmanomas;
  • neleidžiama naudoti globalių kintamųjų (programos modulio kintamieji deklaruojami su nuoroda „Eksportuoti“);

Daugiau informacijos rasite [ITS15] ir kituose ITS straipsniuose.

Programų serveriui turi būti taikomi specialūs patikimumo reikalavimai. Tinkamai sukurtoje kliento-serverio sistemoje turi būti įvykdytos šios sąlygos:

  • jokie kliento programos veiksmai neturi nutraukti serverio veikimo (išskyrus administracinius atvejus);
  • serveris negali vykdyti programos kodo, gauto iš kliento;
  • ištekliai turi būti „teisingai“ paskirstyti klientų ryšius, užtikrinant serverio pasiekiamumą nepriklausomai nuo esamos apkrovos;
  • nesant duomenų blokavimo, klientų ryšiai neturėtų turėti įtakos vienas kito darbui;
  • ne serveryje vartotojo sąsaja, tačiau turi būti sukurtos stebėjimo ir registravimo priemonės;

Apskritai 1C sistema yra sukurta taip, kad priartėtų prie šių reikalavimų (pavyzdžiui, neįmanoma priversti serveryje atlikti išorinio apdorojimo), tačiau vis tiek yra keletas nemalonių funkcijų, todėl:

Rekomendacija: Kuriant vykdymo serverį, rekomenduojama laikytis minimalios sąsajos principo. Tie. Įvedimų į serverio modulius skaičius iš kliento programos turėtų būti labai ribotas, o parametrai turi būti griežtai reglamentuoti. Rekomendacija: Serveryje gaunant procedūrų ir funkcijų parametrus, būtina juos patvirtinti (patikrinti, ar parametrai atitinka numatomą reikšmių tipą ir diapazoną). Tai nedaroma standartiniuose sprendimuose, tačiau labai pageidautina įvesti privalomą patvirtinimą savo kūrime. Rekomendacija: Generuodami užklausos tekstą (ir ypač parametrą Run komandos) serverio pusėje, nenaudokite eilučių, gautų iš kliento programos.

Bendra rekomendacija būtų susipažinti su saugios statybos principais žiniatinklio-duomenų bazių programas ir dirbti panašiais principais. Panašumai išties yra nemaži: pirma, kaip ir žiniatinklio programa, taikomųjų programų serveris yra tarpinis sluoksnis tarp duomenų bazės ir vartotojo sąsajos (pagrindinis skirtumas yra tas, kad žiniatinklio serveris sudaro vartotojo sąsają); antra, saugumo požiūriu negalima pasitikėti iš kliento gautais duomenimis, nes galima pradėti išorines ataskaitas ir apdorojimą.

Perdavimo parametrai

Parametrų perdavimas funkcijai (procedūrai), vykdomai serveryje, yra gana subtilus klausimas. Taip yra visų pirma dėl būtinybės juos perkelti tarp programų serverio ir kliento procesų. Kai valdymas pereina iš kliento pusės į serverio pusę, visi perduodami parametrai yra nuosekliai suskirstomi, perduodami į serverį, kur jie „išpakuojami“ ir naudojami. Pereinant iš serverio į kliento pusę, procesas yra atvirkštinis. Reikėtų pažymėti, kad ši schema teisingai tvarko parametrų perdavimą pagal nuorodą ir vertę. Perduodant parametrus taikomi šie apribojimai:

  • Tik nekeičiamos reikšmės (t. y. kurių reikšmių negalima keisti) gali būti perduodamos tarp kliento ir serverio (abiem kryptimis): primityvūs tipai, nuorodos, universalūs rinkiniai, sistemos išvardijimo reikšmės, reikšmių saugykla. Jei bandote perduoti ką nors kita, kliento programa sugenda (net jei serveris bando perduoti neteisingą parametrą).
  • Nerekomenduojama perduoti didelių duomenų kiekių perduodant parametrus (pavyzdžiui, daugiau nei 1 milijono simbolių eilutes), tai gali neigiamai paveikti serverio veikimą.
  • Negalite perduoti parametrų, kuriuose yra ciklinė nuoroda, tiek iš serverio į klientą, tiek atgal. Jei bandote perduoti tokį parametrą, kliento programa sugenda (net jei serveris bando perduoti neteisingą parametrą).
  • Nerekomenduojama perkelti labai sudėtingų duomenų rinkinių. Kai bandote perduoti parametrą su labai dideliu įdėjimo lygiu, serveris sugenda (! ).

Dėmesio! Šiuo metu labiausiai erzinantis bruožas yra klaida perduodant sudėtingus vertybių rinkinius. Taigi, pavyzdžiui, kodas: Nesting Level = 1250;
M = Naujas masyvas;
Patvirtintas parametras = M;
Paskyrai = 1 pagal įdėjimo ciklo lygį
MVInt = naujas masyvas;
M.Add(MVInt);
M = MVint;
EndCycle;
Serverio funkcija (PassedParameter);

Priveda prie avarinio serverio sustojimo, kai visi vartotojai atsijungia, ir tai įvyksta prieš perduodant valdymą į kodą integruota kalba.

Nesaugių funkcijų naudojimas serverio pusėje.

Ne visi įtaisytieji kalbos įrankiai gali būti naudojami programų serveryje vykdomame kode, tačiau net ir tarp turimų įrankių yra daug „probleminių“ konstrukcijų, kurias galima apytiksliai klasifikuoti taip:

  • galintis suteikti galimybę vykdyti kodą, kurio nėra konfigūracijoje (grupė „Kodo vykdymas“)
  • galintis teikti kliento programai informaciją apie failą ir Operacinė sistema vartotojas arba atlikti veiksmus, nesusijusius su darbu su duomenimis („Teisių pažeidimas“)
  • galintis sukelti serverio gedimą arba naudoti labai didelius išteklius (grupė „Serverio gedimas“)
  • galintis sukelti kliento gedimą (kliento gedimų grupė) – šis tipas nenagrinėjamas. Pavyzdys: keičiamos reikšmės perdavimas serveriui.
  • programavimo algoritmų klaidos (begalinės kilpos, neribota rekursija ir kt.) („Programavimo klaidos“)

Žemiau pateikiami pagrindiniai man žinomi probleminiai dizainai (su pavyzdžiais):

Procedūra Vykdyti (<Строка>)

Vykdomas kodas. Leidžia vykdyti kodo dalį, kuri jam perduodama kaip eilutės reikšmė. Kai naudojate serveryje, turite užtikrinti, kad iš kliento gauti duomenys nebūtų naudojami kaip parametras. Pvz., draudžiama naudoti toliau nurodytą informaciją:

#Jei serveris Tada
„ProcedureOnServer(Param1)“ eksportavimas
Vykdyti(Param1);
Procedūros pabaiga
#EndIf

Įveskite "COMObject" (konstruktorius New COMObject(<Имя>, <Имя сервера>))

Sukuria išorinį programos COM objektą su USER1CV8SERVER teisėmis taikomųjų programų serveryje (ar kitame nurodytame kompiuteryje). Kai naudojate serveryje, įsitikinkite, kad parametrai nėra perduodami iš kliento programos. Tačiau serverio pusėje šią funkciją efektyvu naudoti importuojant/eksportuojant, siunčiant duomenis internetu, diegiant nestandartines funkcijas ir pan.

Funkcija GetCOMObject(<Имя файла>, <Имя класса COM>)
Teisių pažeidimas ir kodo vykdymas. Panašiai kaip ir ankstesniame, gaunamas tik failą atitinkantis COM objektas.
Procedūros ir funkcijos Kompiuterio pavadinimas(), Laikinasis failų katalogas(), Programų katalogas(), WindowsUsers()
Teisių pažeidimas. Vykdydami juos serveryje, jie leidžia sužinoti serverio posistemio organizavimo detales. Naudodami serveryje įsitikinkite, kad duomenys nėra perduodami klientui arba nepasiekiami operatoriams be atitinkamo leidimo. Ypatingą dėmesį atkreipkite į tai, kad duomenys gali būti perduodami atgal parametru, perduodamu pagal nuorodą.
Darbo su failais procedūros ir funkcijos (CopyFile, FindFiles, MergeFiles ir daugelis kitų), taip pat failų tipai.

Teisių pažeidimas. Leidžia, vykdant juos serveryje, gauti bendra prieigaį vietinius (ir tinklo) failus, pasiekiamus pagal vartotojo teises USER1CV8SERVER. Sąmoningai naudojant galima efektyviai įgyvendinti tokias užduotis kaip duomenų importavimas/eksportavimas serveryje.

Prieš naudodami šias funkcijas, būtinai patikrinkite savo 1C vartotojo teises. Norėdami patikrinti vartotojo teises, serverio modulyje galite naudoti šią konstrukciją:

#Jei serveris Tada
Procedūra AtlikiteWorkWithFile() eksportavimą
RoleAdministrator = Metadata.Roles.Administrator;
Vartotojas = SessionParameters.CurrentUser;
Jei User.Roles.Contains(RoleAdministrator) Tada
//Čia vykdomas darbo su failais kodas
endIf;
#EndIf

Būtinai patikrinkite parametrus, jei naudojate šias procedūras ir funkcijas, kitaip kyla pavojus netyčia arba sąmoningai padaryti nepataisomą žalą 1C programų serveriui, pavyzdžiui, serveryje vykdant šį kodą:

Path = "C:\Documents and Settings\All Users\Application Data\1C\1Cv8\";
MoveFile(Path + "srvrib.lst", Path + "Here'sWhereTheFileGoes");

Įvykdžius tokį kodą serveryje, jei vartotojas USER1CV8SERVER turi teisę jį pakeisti, kaip aprašyta aukščiau, ir iš naujo paleidus serverio procesą (pagal nutylėjimą, praėjus 3 min. po to, kai visi vartotojai išeina), iškils DIDELIS klausimas dėl serverio paleidimo. . Bet tai įmanoma visiškas pašalinimas failai...

Tipai "XBase", "BinaryData", "XML Reader", "XML Writer", "XSL Transformation", "ZipFile Writer", "ZipFile Reader", "Text Reader", "Text Writer"
Teisių pažeidimas. Vykdant juos serveryje, jie leidžia pasiekti tam tikro tipo vietinius (ir esančius tinkle) failus ir juos skaityti/rašyti pagal vartotojo teises USER1CV8SERVER. Sąmoningai naudojant galima efektyviai įgyvendinti tokias užduotis kaip duomenų importavimas/eksportavimas serveryje, tam tikrų funkcijų veikimo registravimas, administracinių užduočių sprendimas. Apskritai rekomendacijos sutampa su ankstesne pastraipa, tačiau turėtumėte apsvarstyti galimybę perkelti duomenis iš šių failų (bet ne visų šių tipų objektus) tarp kliento ir serverio dalių.
Įveskite "Sistemos informacija"
Teisių pažeidimas. Leidžia gauti duomenis apie taikomųjų programų serverį netinkamai naudojant ir perduodant duomenis į programos kliento dalį. Naudojant patartina apriboti naudojimo teisę.
Tipai „InternetConnection“, „InternetMail“, „InternetProxy“, „HTTPConnection“, „FTPCConnection“

Teisių pažeidimas. Kai naudojamas serveryje, jis prisijungia prie nuotolinio kompiuterio iš taikomųjų programų serverio pagal teises USER1CV8SERVER. Rekomendacijos:

  • Parametrų valdymas iškviečiant metodus.
  • 1C vartotojo teisių valdymas.
  • Griežti vartotojo USER1CV8SERVER teisių prieigos prie tinklo apribojimai.
  • Teisingai nustatykite ugniasienę 1C programų serveryje.

Tinkamai naudojant, patogu organizuoti, pavyzdžiui, el. laiškų siuntimą iš programų serverio.

Tipai „InformationBaseUserManager“, „InformationBaseUser“

Teisių pažeidimas. Neteisingai naudojant (privilegijuotajame modulyje) galima pridėti vartotojų arba pakeisti esamų vartotojų autorizacijos parametrus.

Funkcijos formatas

Serverio gedimas. Taip! Dėl šios iš pažiūros nekenksmingos funkcijos, jei jos parametrai nėra valdomi ir nevykdomi serveryje, gali sugesti serverio programa. Klaida įvyksta formatuojant skaičius ir naudojant režimą, rodantį priešakinius nulius ir daug simbolių, pvz.

Formatas (1, "CHZ=999; CHVN=");

Tikiuosi ši klaida bus ištaisyta kituose platformos leidimuose, bet kol kas visuose šios funkcijos iškvietimuose, kurie gali būti vykdomi serveryje, patikrinkite iškvietimo parametrus.

Vertybių išsaugojimo procedūros ir funkcijos (ValueInRowInt, ValueInFile)
Serverio gedimas.Šios funkcijos neapdoroja žiedinių nuorodų rinkiniuose arba labai giliai sudėjus, todėl kai kuriais labai ypatingais atvejais jos gali sugesti.

Klaidos ribose ir specialiųjų parametrų reikšmėse funkcijose. Vykdymo kontrolė.

Viena iš problemų, su kuria galite susidurti naudodamiesi serveriu, yra didelė serverio funkcijų „atsakomybė“ (galimybė, kad visa serverio programa suges dėl vieno ryšio klaidos ir vienos „resursų vietos“ panaudojimas visoms jungtims) . Taigi reikia valdyti pagrindinius vykdymo laiko parametrus:

  • Jei norite naudoti integruotas kalbos funkcijas, patikrinkite jų paleidimo parametrus (geras pavyzdys yra „Format“ funkcija)
  • Kai naudojate kilpas, įsitikinkite, kad yra įvykdyta kilpos išėjimo sąlyga. Jei ciklas yra potencialiai begalinis, dirbtinai apribokite iteracijų skaičių: MaximumIterationCounterValue = 1000000;
    Iteracijų skaitiklis = 1;
    Ate
    Funkcija, kuri negali grąžinti klaidingos vertės()
    IR (iteracijų skaičius<МаксимальноеЗначениеСчетчикаИтераций) Цикл

    //.... Kilpos korpusas
    Iteracijų skaitiklis = Iteracijų skaitiklis + 1;
    EndCycle;
    Jei Iteracijų skaitiklis>Maksimali iteracijų skaitiklio vertė Tada
    //.... tvarkyti pernelyg ilgo ciklo vykdymo įvykį
    endIf;

  • Kai naudojate rekursiją, apribokite maksimalų įdėjimo lygį.
  • Formuodami ir vykdydami užklausas stenkitės išvengti labai ilgų pasirinkimų ir didelio informacijos kiekio pasirinkimų (pavyzdžiui, kai naudojate sąlygą „HIERARCHIJOJE“, nenaudokite tuščios reikšmės)
  • Kurdami informacinę bazę, numatykite pakankamai didelį skaičių bitų gylio rezervą (kitaip sudėjimas ir daugyba tampa nekomutaciniai ir neasociatyvūs, todėl sunku derinti)
  • Vykdomosiose užklausose patikrinkite, ar operacijų logikoje nėra NULL ir teisingas veikimas sąlygos ir užklausos išraiškos naudojant NULL.
  • Kai naudojate kolekcijas, valdykite galimybę perkelti jas tarp programų serverio ir kliento pusės.

Terminalo prieigos prie kliento pusės naudojimas prieigai apriboti

Dažnai galite rasti rekomendacijų, kaip naudoti terminalo prieigą, kad apribotumėte prieigą prie duomenų ir pagerintumėte našumą, vykdydami kliento kodą terminalo serveryje. Taip, jei sukonfigūruota teisingai, terminalo prieigos naudojimas iš tikrųjų gali padidinti bendrą sistemos saugumo lygį, bet, deja, dažnai galite susidurti su tuo, kad praktinis naudojimas Sistemos saugumas tik mažėja. Pabandykime išsiaiškinti, su kuo tai susiję. Dabar yra dvi įprastos terminalo prieigos organizavimo priemonės: „Microsoft Terminal Services“ (RDP protokolas) ir „Citrix Metaframe Server“ (ICA protokolas). Apskritai Citrix įrankiai suteikia daug lankstesnių prieigos administravimo galimybių, tačiau šių sprendimų kaina yra daug didesnė. Mes apsvarstysime tik pagrindines abiem protokolams būdingas savybes, kurios gali sumažinti bendrą saugumo lygį. Naudojant prieigą prie terminalo yra tik trys pagrindiniai pavojai:
  • Galimybė blokuoti kitų vartotojų darbą užvaldant per didelius resursų kiekius
  • Prieiga prie kitų vartotojų duomenų.
  • Neteisėtas duomenų kopijavimas iš terminalo serverio į vartotojo kompiuterį

Bet kuriuo atveju terminalo paslaugos leidžia:

  • Padidinkite darbo patikimumą (jei yra terminalo kompiuterio gedimas, vartotojas vėliau gali tęsti darbą iš tos pačios vietos)
  • Apriboti prieigą prie kliento programos ir jos išsaugotų failų.
  • Perkelkite skaičiavimo apkrovą iš vartotojo darbo vietos į terminalo prieigos serverį
  • Tvarkykite sistemos nustatymus centralizuotai. Vartotojams išsaugoti nustatymai galios nepriklausomai nuo to, iš kurio kompiuterio jie prisijungė prie sistemos.
  • Kai kuriais atvejais galite naudoti terminalo sprendimą Nuotolinis prisijungimas prie sistemos.

Būtina apriboti galimų prisijungimų prie terminalo serverio skaičių vienam vartotojui

Dėl 1C kliento programos „apsvaigimo“ dėl išteklių būtina apriboti maksimalus kiekis vienalaikiai vieno vartotojo (operatoriaus) prisijungimai prie terminalo serverio. Aktyviai naudojamas ryšys gali naudoti iki 300 MB atminties tik su vienu programos egzemplioriumi. Be atminties, aktyviai naudojamas procesoriaus laikas, kuris taip pat neprisideda prie šio serverio vartotojų stabilumo. Tuo pačiu metu, kai užkertamas kelias pernelyg dideliam serverio išteklių naudojimui, toks apribojimas gali neleisti naudoti kieno nors kito sąskaitą. Įdiegta naudojant standartinius terminalo serverio nustatymus.

Vienu ryšiu neturėtumėte leisti vienu metu veikti daugiau nei vienai ar dviem 1C kliento programoms

Padiktuota dėl tų pačių priežasčių kaip ir ankstesnėje pastraipoje, tačiau techniškai sunkiau įgyvendinama. Problema ta, kad beveik neįmanoma užkirsti kelią 1C paleidimui iš naujo naudojant terminalo serverio įrankius (kodėl bus paaiškinta toliau), todėl šią funkciją turite įdiegti programos sprendimo lygmeniu (tai taip pat nėra geras sprendimas, nes sesijos gali kurį laiką „kaboti“ Jei programa nutraukiama neteisingai, reikia patobulinti programos sprendimą programos modulyje ir kai kuriose žinynuose, o tai apsunkins atnaujinimų iš 1C naudojimą. Labai pageidautina palikti vartotojui galimybę paleisti 2 programas, kad galėtų atlikti kai kuriuos veiksmus (pavyzdžiui, generuoti ataskaitas) fone– kliento programa, deja, iš tikrųjų yra vienos gijos.

Nerekomenduojama suteikti prieigos prie terminalo serverio teisių vartotojams, turintiems teisę vykdyti daug išteklių reikalaujančias skaičiavimo užduotis 1C arba užkirsti kelią tokiam paleidimui, kol kiti vartotojai aktyviai dirba.

Žinoma, geriau palikti prieigą prie terminalo serverio tik tiems vartotojams, kurie nenaudoja tokių užduočių kaip duomenų gavyba, geografinės diagramos, importas/eksportas ir kitos užduotys, kurios rimtai apkrauna klientinę programos dalį. Jei vis tiek reikia leisti tokias užduotis, būtina: informuoti vartotoją, kad šios užduotys gali turėti įtakos kitų vartotojų veiklai, įrašyti tokio proceso pradžią ir pabaigą žurnale, leisti vykdyti tik reguliuojamoje vietoje. laikas ir kt.

Būtina įsitikinti, kad kiekvienas vartotojas turi rašymo teises tik į griežtai apibrėžtus terminalo serverio katalogus, o kiti vartotojai neturi prieigos prie jų.

Pirma, jei neapribosite galimybės rašyti į bendrinamus katalogus (pvz., katalogą, kuriame įdiegtas 1C), užpuolikas gali pakeisti programos elgesį visiems vartotojams. Antra, vieno vartotojo duomenys (laikinieji failai, failų išsaugojimo ataskaitų nustatymai ir pan.) jokiu būdu neturėtų būti prieinami kitam terminalo serverio vartotojui – apskritai, kai normalus nustatymasšios taisyklės laikomasi. Trečia, užpuolikas vis dar turi galimybę „šiukšlinti“ skaidinį, kad standžiajame diske neliktų vietos. Žinau, kad jie man prieštaraus, kad „Windows“ operacinė sistema, pradedant nuo „Windows 2000“, turi kvotų mechanizmą, tačiau tai gana brangus mechanizmas, kurio realaus panaudojimo praktiškai niekada nemačiau.

Jei ankstesni prieigos nustatymo klausimai paprastai buvo gana lengvai įgyvendinami, tai tokia (atrodo) paprasta užduotis, kaip vartotojo prieigos prie failų reguliavimas, nėra trivialiai įgyvendinama. Pirma, jei nenaudojamas kvotos mechanizmas, galima išsaugoti didelius failus. Antra, sistema sukurta taip, kad beveik visada bus galima išsaugoti failą, kad jis būtų prieinamas kitam vartotojui.

Atsižvelgiant į tai, kad užduotį sunku visiškai išspręsti, rekomenduojama atlikti daugelio failų įvykių auditą

Būtina uždrausti disko įrenginių, spausdintuvų ir kliento darbo vietos iškarpinės prijungimą (susitvarkymą).

KPP ir ICA galima organizuoti automatinis ryšys terminalo kompiuterio diskų, spausdintuvų, iškarpinės com prievadų į serverį. Jei tokia galimybė yra, beveik neįmanoma užkirsti kelio svetimo kodo paleidimui terminalo serveryje ir duomenų iš 1C išsaugojimui terminalo prieigos kliente. Leiskite šias funkcijas tik tiems, kurie turi administratoriaus teises.

Prieiga prie tinklo failų iš terminalo serverio turėtų būti apribota.

Jei to nepadarysite, vartotojas vėl galės paleisti nepageidaujamą kodą arba išsaugoti duomenis. Kadangi įprastas žurnalas neseka failų įvykių (beje, gera idėja, kurią gali įgyvendinti platformos kūrėjai), ir beveik neįmanoma nustatyti sistemos audito visame tinkle (neužtenka išteklių jam palaikyti), geriau, kad vartotojas galėtų siųsti duomenis spausdinti arba el. paštu. Ypatingą dėmesį atkreipkite į tai, kad terminalo serveris neveiktų tiesiogiai su vartotojų keičiamomis laikmenomis.

Kurdami saugią sistemą jokiu būdu nepalikite programų serverio terminalo serveryje.

Jei programų serveris veikia tame pačiame kompiuteryje kaip ir kliento programos, yra daug galimybių sutrikdyti įprastą jo veikimą. Jei dėl kokių nors priežasčių neįmanoma atskirti terminalo serverio ir programų serverio funkcijų, atkreipkite ypatingą dėmesį į vartotojo prieigą prie programų serverio naudojamų failų.

Būtina atmesti galimybę terminalo serveryje paleisti visas programas, išskyrus 1C:Enterprise.

Tai vienas iš sunkiausiai įgyvendinamų norų. Pradėkime nuo to, kad reikia tinkamai sukonfigūruoti politiką grupės nuostatos saugumas domene. Visi administravimo šablonai ir programinės įrangos apribojimų politika turi būti tinkamai sukonfigūruoti. Norėdami išbandyti save, įsitikinkite, kad užblokuotos bent šios funkcijos:

Įgyvendinimo sudėtingumas šis reikalavimas dažnai suteikia galimybę terminalo serveryje paleisti „papildomą“ 1C sesiją (net jei kitos programos yra ribotos, iš esmės neįmanoma uždrausti paleisti 1C naudojant „Windows“).

Apsvarstykite įprasto žurnalo apribojimus (visi vartotojai naudoja programą iš vieno kompiuterio)

Akivaizdu, kad kadangi vartotojai atidaro 1C terminalo režimu, terminalo serveris bus įrašytas į žurnalą. Žurnalas nenurodo, iš kurio kompiuterio vartotojas prisijungė.

Terminalo serveris – apsauga ar pažeidžiamumas?

Taigi, įvertinus pagrindines šiaurinio terminalo ypatybes, galima teigti, kad šiaurinis terminalas potencialiai gali padėti automatizuojant skaičiavimo apkrovą, tačiau sukurti saugią sistemą yra gana sunku. Vienas iš atvejų, kai terminalo serverio naudojimas yra efektyviausias, yra 1C paleidimas be jo „Windows Explorer“. viso ekrano režimu, skirta riboto funkcionalumo ir specializuotos sąsajos vartotojams.

Užsakovo dalies darbas

Internet Explorer (IE) naudojimas

Viena iš normalaus 1C kliento dalies veikimo sąlygų yra komponentų naudojimas Internet Explorer. Su šiais komponentais turite būti labai atsargūs.

Dėmesio! Pirma, jei šnipinėjimo ar reklaminių programų modulis yra „prijungtas“ prie IE, jis bus įkeltas, net jei peržiūrėsite bet kokius HTML failus 1C. Kol kas nemačiau sąmoningo šios funkcijos naudojimo, tačiau vienoje iš organizacijų mačiau įkeltą „šnipo“ modulį iš vieno pornografinio tinklo, kuriame veikia 1C (antivirusinė programa nebuvo atnaujinta, jos simptomai buvo aptikti : nustatant užkardą buvo aišku, kad 1C bandė 80 prievadą prisijungti prie pornografinės svetainės). Tiesą sakant, tai dar vienas argumentas, patvirtinantis, kad apsauga turi būti visapusiška

Dėmesio! Antra, 1C sistema leidžia naudoti „flash“ vaizdo įrašus, „ActiveX“ objektus, VBScript rodomuose HTML dokumentuose, siųsti duomenis į internetą, net atidaryti PDF failus(!), nors pastaruoju atveju prašo „atidaryti arba išsaugoti“... Apskritai, ko tik širdis geidžia. Ne visiškai protingo integruotų HTML peržiūros ir redagavimo galimybių naudojimo pavyzdys:

  • Sukurkite naują HTML dokumentą (Failas -> Naujas -> HTML dokumentas).
  • Eikite į tuščio dokumento skirtuką „Tekstas“.
  • Pašalinkite tekstą (visą).
  • Eikite į šio dokumento skirtuką „Peržiūrėti“.
  • Naudodami „drag-n-drop“ perkelkite failą su SWF plėtiniu (tai yra „Flash“ filmų failai) iš atviros naršyklės į dokumento langą, pavyzdžiui, iš naršyklės talpyklos, nors pramogai taip pat galite naudoti FLASH žaislą.
  • Kaip miela! Galite paleisti žaislą ant 1C!

Sistemos saugumo požiūriu tai visiškai neteisinga. Kol kas nemačiau jokių specialių atakų prieš 1C per šį pažeidžiamumą, bet greičiausiai tai bus laiko ir jūsų informacijos vertės klausimas.

Yra keletas kitų nedidelių problemų, kylančių dirbant su HTML dokumento lauku, tačiau pagrindinės yra išvardytos dvi. Nors kūrybiškai priartėję prie šių funkcijų, dirbdami su 1C galėsite sukurti tikrai nuostabias sąsajos galimybes.

Išorinių ataskaitų naudojimas ir apdorojimas.

Dėmesio! Išorinės ataskaitos ir apdorojimas, viena vertus, patogus būdas papildomų įgyvendinimas spausdintos formos, reguliavimo ataskaitų teikimas, specializuotos ataskaitos, kita vertus, galimas būdas apeiti daugelį sistemos saugumo apribojimų ir sutrikdyti taikomųjų programų serverio veikimą (pavyzdžiui, žr. aukščiau esančiame skyriuje „Parametrų perdavimas“). 1C sistemoje teisių rinkinyje yra specialus parametras, skirtas vaidmeniui „Interaktyvus išorinio apdorojimo atidarymas“, tačiau tai visiškai neišsprendžia problemos - pilnas sprendimas būtina žymiai susiaurinti vartotojų, galinčių valdyti išorines spausdintas formas, reguliavimo ataskaitas ir kitas standartines galimybes, ratą standartiniai sprendimaiįdiegta naudojant išorinį apdorojimą. Pavyzdžiui, pagal numatytuosius nustatymus UPP visi pagrindiniai vartotojo vaidmenys turi galimybę dirbti su papildomų spausdintų formų katalogu, ir tai iš tikrųjų yra galimybė naudoti bet kokį išorinį apdorojimą.

Standartinių mechanizmų naudojimas standartiniams sprendimams ir platformoms (keitimasis duomenimis)

Kai kurie standartiniai mechanizmai yra potencialiai pavojingi ir netikėtais būdais.

Sąrašų spausdinimas

Bet kurį sistemos sąrašą (pavyzdžiui, katalogą ar informacijos registrą) galima atspausdinti arba įrašyti į failą. Norėdami tai padaryti, tiesiog naudokite standartinę funkciją, pasiekiamą kontekstiniame meniu ir meniu „Veiksmai“:

Atminkite, kad beveik viską, ką vartotojas mato sąrašuose, galima išvesti į išorinius failus. Vienintelis dalykas, kurį galime patarti, yra vesti dokumentų spausdinimo žurnalą spausdinimo serveriuose. Ypač svarbioms formoms būtina sukonfigūruoti veiksmų skydelį, susietą su apsaugotu lentelės lauku, kad šiame skydelyje nebūtų galima rodyti sąrašo, ir išjungti kontekstinis meniu(žr. 6 pav.).

Duomenų keitimasis paskirstytoje duomenų bazėje

Keitimosi duomenimis formatas yra gana paprastas ir aprašytas dokumentacijoje. Jei vartotojas turi galimybę pakeisti kelis failus, jis gali atlikti neleistinus sistemos pakeitimus (nors tai gana daug darbo reikalaujanti užduotis). Galimybė sukurti periferinę duomenų bazę naudojant paskirstytus duomenų bazių mainų planus neturėtų būti prieinama paprastiems operatoriams.

Standartinis keitimas XML duomenys

Standartiniuose duomenų mainuose, kurie naudojami apsikeitimui tarp standartinių konfigūracijų (pvz., „Prekybos valdymas“ ir „Įmonių apskaita“), mainų taisyklėse galima nurodyti objektų pakrovimo ir iškrovimo įvykių tvarkykles. Tai įgyvendinama iš failo gavus tvarkyklę ir „Run()“ procedūrą, skirtą standartiniam failo įkėlimo ir iškrovimo apdorojimui (kliento pusėje paleidžiama procedūra „Run()“). Akivaizdu, kad nėra sunku sukurti tokį netikrą mainų failą, kuris atliks kenkėjiškus veiksmus. Daugeliui standartinių sprendimų naudotojų vaidmenų bendrinimas leidžiamas pagal numatytuosius nustatymus.

Rekomendacija: apriboti prieigą prie XML mainų daugumai vartotojų (paliekant tai tik informacijos saugumo administratoriams). Saugokite šio apdorojimo eigų žurnalus, išsaugodami mainų failą, pavyzdžiui, siųsdami elektroniniu paštu informacijos saugos administratorius prieš atsisiunčiant.

Bendrųjų ataskaitų naudojimas, ypač ataskaitų pultas

Kita problema yra numatytoji vartotojo prieiga prie bendrųjų ataskaitų, ypač ataskaitų konsolės ataskaitos. Ši ataskaita pasižymi tuo, kad leidžia įvykdyti beveik bet kokias informacijos saugumo užklausas ir, net jei 1C teisių sistema (įskaitant RLS) yra sukonfigūruota gana griežtai, ji leidžia vartotojui gauti daug „papildomos“ informacijos. ir priversti serverį vykdyti užklausą, kuri sunaudos visas išteklių sistemas.

Viso ekrano režimo naudojimas (darbalaukio režimas)

Vienas iš veiksmingų būdų organizuoti specializuotas sąsajas su ribota prieiga prie programos funkcijų yra pagrindinės (ir galbūt vienintelės) naudojamos sąsajos formos viso ekrano režimas. Tokiu atveju nėra pasiekiamumo problemų, pavyzdžiui, meniu „Failas“ ir visus vartotojo veiksmus riboja naudojamos formos galimybės. Norėdami gauti daugiau informacijos, žr. „Darbalaukio režimo diegimo ypatybės“ ITS diske.

Atsarginė kopija

1C kliento-serverio versijos atsarginę kopiją galima atlikti dviem būdais: įkelti duomenis į failą su plėtiniu dt ir sukurti atsargines kopijas naudojant SQL. Pirmasis būdas turi daug trūkumų: reikalinga išskirtinė prieiga, pačios kopijos sukūrimas užtrunka daug ilgiau, kai kuriais atvejais (jei pažeidžiama informacijos saugumo struktūra) archyvo sukurti neįmanoma, tačiau yra vienas privalumas – minimalus dydis. archyvas. SQL atsarginės kopijos atveju yra priešingai: kopija sukuriama fone naudojant SQL serverį dėl paprastos struktūros ir suspaudimo trūkumo - tai labai greitas procesas ir tol, kol bus išsaugotas fizinis SQL vientisumas. duomenų bazė nesulaužyta, atsarginė kopija daroma, tačiau kopijos dydis sutampa su tikrosios informacijos saugumo dydžiu išplėstoje būsenoje (glaudinimas neatliekamas). Dėl papildomų MS SQL atsarginės kopijos sistemos privalumų ją naudoti tikslingiau (leidžiamos 3 atsarginių kopijų rūšys: pilnas, diferencinis, operacijų žurnalo kopija; galima kurti reguliariai vykdomas užduotis; ji greitai įdiegiama atsarginė kopija ir atsarginė sistema; įdiegta galimybė numatyti reikalingos vietos diske dydį ir pan.). Pagrindiniai atsarginės kopijos organizavimo punktai sistemos saugumo požiūriu yra šie:

  • Poreikis pasirinkti atsarginių kopijų saugojimo vietą, kad jos nebūtų prieinamos vartotojams.
  • Poreikis saugoti atsargines kopijas fiziniu atstumu nuo MS SQL serverio (stichinių nelaimių, gaisrų, atakų ir kt.)
  • Galimybė suteikti teises sukurti atsarginę kopiją vartotojui, kuris neturi prieigos prie atsarginių kopijų.

Daugiau informacijos rasite MS SQL dokumentacijoje.

Duomenų šifravimas

Siekiant apsaugoti duomenis nuo neteisėtos prieigos, dažnai naudojami įvairūs kriptografiniai įrankiai (tiek programinė, tiek techninė), tačiau jų įgyvendinamumas labai priklauso nuo teisingo pritaikymo ir bendro sistemos saugumo. Apžvelgsime duomenų šifravimą įvairiuose duomenų perdavimo ir saugojimo etapuose naudojant dažniausiai pasitaikančias priemones ir pagrindines sistemos projektavimo klaidas naudojant kriptografinius įrankius.

Yra keli pagrindiniai informacijos apdorojimo etapai, kuriuos galima apsaugoti:

  • Duomenų perdavimas tarp kliento sistemos dalies ir taikomųjų programų serverio
  • Duomenų perkėlimas tarp programų serverio ir MS SQL serverio
  • Duomenys, saugomi MS SQL Server (duomenų failai fiziniame diske)
  • Informacijos saugos duomenų šifravimas
  • Išoriniai duomenys (susiję su informacijos saugumu)

Duomenims, saugomiems kliento pusėje ir taikomųjų programų serveryje (išsaugoti vartotojo nustatymai, informacijos saugos sąrašas ir kt.), šifravimas yra pagrįstas tik labai retais atvejais, todėl čia nėra svarstomas. Naudodamiesi kriptografiniais įrankiais, neturime pamiršti, kad jų naudojimas gali žymiai sumažinti visos sistemos našumą.

Bendra informacija apie tinklo jungčių kriptografinę apsaugą naudojant TCP/IP protokolą.

Nesant saugumo, visi tinklo ryšiai yra pažeidžiami neteisėtos priežiūros ir prieigos. Norėdami juos apsaugoti, galite naudoti duomenų šifravimą tinklo protokolo lygiu. Vietiniu tinklu perduodamiems duomenims užšifruoti dažniausiai naudojami operacinės sistemos teikiami IPSec įrankiai.

IPSec įrankiai užtikrina perduodamų duomenų šifravimą naudojant DES ir 3DES algoritmus, taip pat vientisumo patikrinimą naudojant MD5 arba SHA1 maišos funkcijas. IPSec gali veikti dviem režimais: transportavimo ir tunelio režimu. Transporto režimas geriau tinka jungtims vietiniame tinkle užtikrinti. Tunelio režimas gali būti naudojamas VPN ryšiams organizuoti tarp atskirų tinklo segmentų arba apsaugoti nuotolinį ryšį su vietiniu tinklu atvirais duomenų kanalais.

Pagrindiniai šio metodo pranašumai yra šie:

  • Centralizuoto saugumo valdymo galimybė naudojant Active Directory įrankius.
  • Galimybė pašalinti neteisėtus prisijungimus prie programų serverio ir MS SQL serverio (pavyzdžiui, galima apsisaugoti nuo neteisėto informacijos saugos papildymo programų serveryje).
  • Tinklo srauto „klausymosi“ panaikinimas.
  • Nereikia keisti elgesio taikomosios programos(šiuo atveju 1C).
  • Standartinis tokio sprendimo pobūdis.

Tačiau šis metodas turi apribojimų ir trūkumų:

  • IPSec neapsaugo duomenų nuo trukdžių ir pasiklausymo tiesiogiai šaltinio ir paskirties kompiuteriuose.
  • Per tinklą perduodamų duomenų kiekis yra šiek tiek didesnis nei nenaudojant IPSec.
  • Naudojant IPSec, centrinio procesoriaus apkrova yra šiek tiek didesnė.

Išsamus IPSec įrankių diegimo aprašymas nepatenka į šio straipsnio taikymo sritį ir reikalauja suprasti pagrindinius IP protokolo veikimo principus. Norėdami tinkamai sukonfigūruoti ryšio saugumą, perskaitykite atitinkamą dokumentaciją.

Atskirai reikia paminėti keletą aspektų licencijos sutartis su 1C organizuojant VPN ryšius. Faktas yra tas, kad, nepaisant techninių apribojimų nebuvimo, jungiant kelis vietinio tinklo segmentus arba nuotolinę prieigą prie atskiro kompiuterio prie vietinio tinklo, paprastai reikia kelių pagrindinių reikmenų.

Duomenų šifravimas, kai jie perduodami tarp kliento sistemos dalies ir taikomųjų programų serverio.

Be šifravimo lygiu tinklo protokolas, galima šifruoti duomenis COM+ protokolo lygiu, apie kurį kalbama ITS straipsnyje „Vartotojų prieigos prie informacinės bazės reguliavimas kliento-serverio versijoje“. Norėdami tai įgyvendinti, „Komponentų paslaugose“ turite nustatyti 1CV8 programos skambučių „Paketų privatumo“ autentifikavimo lygį. Nustačius šį režimą, paketas autentifikuojamas ir užšifruojamas, įskaitant duomenis ir siuntėjo tapatybę bei parašą.

Duomenų šifravimas, kai jie perduodami tarp programų serverio ir MS SQL serverio

MS SQL Server pateikia šiuos duomenų šifravimo įrankius:

  • Perduodant duomenis tarp taikomųjų programų serverio ir MS SQL serverio, galima naudoti Secure Sockets Layer (SSL).
  • Naudojant Multiprotocol tinklo biblioteką, duomenų šifravimas naudojamas RPC lygiu. Tai gali būti silpnesnis šifravimas nei naudojant SSL.
  • Jei naudojamas Shared Memory mainų protokolas (taip nutinka, jei programų serveris ir MS SQL Server yra tame pačiame kompiuteryje), šifravimas jokiu būdu nenaudojamas.

Norėdami nustatyti poreikį užšifruoti visus perduodamus duomenis konkrečiam MS SQL serveriui, turite naudoti „Server Network Utility“ įrankį. Paleiskite jį ir skirtuke „Bendra“ pažymėkite žymimąjį laukelį „Priverstinis protokolo šifravimas“. Šifravimo metodas pasirenkamas atsižvelgiant į kliento programos (ty 1C taikomosios programos serverio) naudojamą metodą. Norėdami naudoti SSL, turite tinkamai sukonfigūruoti sertifikatų paslaugą savo tinkle.

Norėdami nustatyti poreikį šifruoti visus perduodamus duomenis konkrečiam programų serveriui, turite naudoti „Client Network Utility“ paslaugų programą (paprastai esančią „C:\WINNT\system32\cliconfg.exe“). Kaip ir ankstesniu atveju, skirtuke „Bendra“ pažymėkite žymimąjį laukelį „Priverstinis protokolo šifravimas“.

Verta manyti, kad šifravimo naudojimas šiuo atveju gali turėti didelės įtakos sistemos veikimui, ypač naudojant užklausas, kurios grąžina didelius informacijos kiekius.

Norėdami geriau apsaugoti ryšį tarp taikomųjų programų serverio ir MS SQL Server naudojant TCP/IP protokolą, galime rekomenduoti kelis numatytųjų nustatymų pakeitimus.

Pirma, galite nustatyti ne standartinį prievadą (1433 prievadas naudojamas pagal numatytuosius nustatymus). Jei nuspręsite keistis duomenimis naudoti nestandartinį TCP prievadą, atkreipkite dėmesį, kad:

  • MS SQL serveris ir programų serveris turi naudoti tą patį prievadą.
  • Naudojant ugniasienes, šis prievadas turi būti leidžiamas.
  • Negalite nustatyti prievado, kurį galėtų naudoti kitos MS SQL serverio programos. Norėdami gauti informacijos, galite naudoti http://www.ise.edu/in-notes/iana/assignments/port-numbers (adresas paimtas iš SQL Server Books Online).
  • Kai naudojate kelis MS SQL serverio paslaugos egzempliorius, būtinai perskaitykite MS SQL konfigūravimo dokumentaciją (skyrius „Tinklo ryšių konfigūravimas“).

Antra, MS SQL serverio TCP/IP protokolo nustatymuose galite nustatyti vėliavėlę „Slėpti serverį“, kuri draudžia atsakyti į transliavimo užklausas šiam MS SQL serverio paslaugos egzemplioriui.

Diske saugomų MS SQL duomenų šifravimas

Yra gana didelis programinės ir techninės įrangos pasirinkimas duomenims šifruoti vietinis diskas(tai yra standartinė „Windows“ galimybė naudoti EFS ir „eToken“ raktus bei trečiųjų šalių programas, tokias kaip Jetico Bestcrypt arba PGPDisk). Viena iš pagrindinių užduočių, kurias atlieka šie įrankiai – apsaugoti duomenis praradus laikmeną (pavyzdžiui, pavogus serverį). Ypač verta paminėti, kad „Microsoft“ nerekomenduoja saugoti MS SQL duomenų bazių šifruotoje laikmenoje, ir tai yra gana pagrįsta. Pagrindinė to problema yra reikšmingas našumo sumažėjimas ir galimos patikimumo problemos dėl gedimų. Antras veiksnys, apsunkinantis sistemos administratoriaus gyvenimą, yra būtinybė užtikrinti visų duomenų bazės failų prieinamumą tuo metu, kai MS SQL paslauga pirmą kartą juos pasiekia (t. y., jungiant šifruotą laikmeną pageidautina, kad būtų neįtraukti interaktyvūs veiksmai).

Kad išvengtumėte pastebimo sistemos našumo sumažėjimo, galite pasinaudoti MS SQL galimybe kurti duomenų bazes keliuose failuose. Žinoma, tokiu atveju MS SQL duomenų bazė turi būti kuriama ne 1C serverio kuriant informacinę bazę, o turi būti sukurta atskirai. Toliau pateikiamas TSQL scenarijaus su komentarais pavyzdys:

NAUDOKITE meistrą
EIK
– Sukurti „SomeData“ duomenų bazę,
KURTI DUOMENŲ BAZĘ SomeData
-- kurių duomenys yra failų grupėje PRIMARY.
PAGRINDINĖJE
-- Pagrindinis duomenų failas yra šifruotoje laikmenoje (loginiame diske E :)
– ir pradinis dydis yra 100 MB, jį galima automatiškai padidinti iki 200 MB
– 20 MB žingsniais
(NAME = SomeData1,
FILENAME = "E:\SomeData1.mdf",
DYDIS = 100 MB,
DIDŽIAUSIA = 200,
FAILŲ AUGIMAS = 2),
-- Antrasis duomenų failas yra nešifruotoje laikmenoje (loginiame diske C :)
– ir pradinis dydis yra 100 MB, gali būti automatiškai padidintas iki ribos
- vietos diske 5% dabartinio failo dydžio žingsniais (suapvalinta iki 64 KB)
(NAME = SomeData2,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SomeData2.ndf",
DYDIS = 100 MB,
MAXSIZE = NERIBOTAS,
FAILŲ AUGIMAS = 5 %)
PRISIJUNGTI
-- Nors operacijų žurnalą taip pat galima suskirstyti į dalis, to daryti nereikėtų,
-- nes šis failas keičiamas daug dažniau ir yra reguliariai valomas (pavyzdžiui, kai
-- duomenų bazės atsarginės kopijos kūrimas).
(NAME = SomeDatalog,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SomeData.ldf",
DYDIS = 10 MB,
MAXSIZE = NERIBOTAS,
FAILŲ AUGIMAS = 10)
EIK
-- Geriau iš karto perduoti duomenų bazės nuosavybės teisę vartotojui, kurio vardu
-- 1C prisijungs. Norėdami tai padaryti, turime deklaruoti esamą bazę
- ką tik sukurta,
NAUDOKITE „SomeData“.
EIK
-- ir paleiskite sp_changedbowner
EXEC sp_changedbowner @loginame = "SomeData_dbowner"

Trumpas nukrypimas apie automatinį duomenų failo dydžio augimą. Pagal numatytuosius nustatymus naujų duomenų bazių failų dydžiai didinami 10 % dabartinio failo dydžio žingsniais. Tai visiškai priimtinas sprendimas mažoms duomenų bazėms, bet nelabai tinka didelėms: kai duomenų bazės dydis yra, pavyzdžiui, 20 GB, failas iš karto turėtų padidėti 2 GB. Nors šis įvykis įvyks gana retai, jis gali trukti kelias dešimtis sekundžių (visos kitos operacijos šiuo metu faktiškai neveikia), o tai įvykus aktyvaus darbo su duomenų baze metu gali sukelti tam tikrų gedimų. Antroji neigiama proporcingo prieaugio pasekmė, kuri pasireiškia, kai disko talpa, yra priešlaikinio gedimo dėl trūkumo tikimybė laisva vieta. Pavyzdžiui, jei 40 GB talpos disko skaidinys yra visiškai skirtas vienai duomenų bazei (tiksliau, vienam šios duomenų bazės failui), tada kritinis duomenų bazės failo dydis, kurį reikia skubiai (labai skubiai, iki normalaus vartotojų darbo nutraukimo) pertvarkyti informacijos saugojimą yra duomenų failo dydis 35 GB. Nustačius 10–20 MB padidinimo dydį, galite tęsti darbą, kol pasieksite 39 GB.

Todėl, nors pirmiau pateiktame sąraše nurodomas vieno iš duomenų bazės failų dydžio padidinimas 5 % žingsniais, didelėms duomenų bazėms geriau nustatyti fiksuotą 10–20 MB padidėjimą. Nustatydami duomenų bazės failų dydžio prieaugio reikšmes, turite atsižvelgti į tai, kad prieš vieną iš failų pasiekiant failų grupę maksimalus dydis, galioja taisyklė: vienos failų grupės failai padidinami tuo pačiu metu, kai visi yra visiškai užpildyti. Taigi aukščiau pateiktame pavyzdyje, kai failas SomeData1.mdf pasiekia maksimalų 200 MB dydį, failas SomeData2.ndf bus maždaug 1,1 GB dydžio.

Sukūrus tokią duomenų bazę, net jei jos neapsaugoti failai SomeData2.ndf ir SomeData.ldf taps prieinami užpuolikui, bus itin sunku atkurti tikrąją duomenų bazės būseną – duomenis (įskaitant informaciją apie loginę duomenų bazės struktūrą). ) bus išsklaidyta keliuose failuose, o pagrindinė informacija (pvz., apie tai, kurie failai sudaro šią duomenų bazę) bus šifruotame faile.

Žinoma, jei naudojamas duomenų bazės failų saugojimas kriptografinėmis priemonėmis, atsarginės kopijos (bent jau šių failų) neturėtų būti daromos nešifruotose laikmenose. Norėdami sukurti atsarginę atskirų duomenų bazės failų kopiją, naudokite atitinkamą BACKUP DATABASE komandos sintaksę. Atkreipkite dėmesį, kad nors duomenų bazės atsarginę kopiją galima apsaugoti slaptažodžiu ("BACKUP DATABASE" komandos parinktys "PASSWORD = " ir "MEDIAPASSWORD = "), tokia atsarginė kopija nėra užšifruota!

Programų serverio ir kliento duomenų, saugomų diskuose, šifravimas

Daugeliu atvejų negalima laikyti pateisinama 1C:Enterprise (kliento dalis ir programų serveris) naudojamų failų saugojimas šifruotoje laikmenoje dėl nepagrįstai didelių išlaidų, tačiau, jei toks poreikis yra, atkreipkite dėmesį, kad programų serveris ir kliento dalis labai dažnai sukuria laikinus failus. Dažnai šie failai gali likti pasibaigus programai, ir beveik neįmanoma garantuoti, kad jie bus pašalinti naudojant 1C įrankius. Taigi tampa būtina užšifruoti laikiniesiems failams naudojamą katalogą 1C arba nesaugoti jo diske naudojant RAM diską (pastaroji parinktis ne visada įmanoma dėl sugeneruotų failų dydžio ir 1C: Enterprise RAM reikalavimų pati programa).

Duomenų šifravimas naudojant įmontuotus 1C įrankius.

Standartinės 1C šifravimo naudojimo galimybės apima objektų naudojimą dirbant su ZIP failais su šifravimo parametrais. Galimi šie šifravimo režimai: AES algoritmas su 128, 192 arba 256 bitų raktu ir pasenęs algoritmas, iš pradžių naudotas ZIP archyvavimo priemonėje. AES užšifruotų ZIP failų daugelis archyvatorių neįskaito (WinRAR, 7zip). Norėdami sugeneruoti failą su užšifruotais duomenimis, turite nurodyti slaptažodį ir šifravimo algoritmą. Paprasčiausias pavyzdysšifravimo-dešifravimo funkcijos, pagrįstos šia funkcija, pateiktos žemiau:

Funkcija EncryptData (duomenys, slaptažodis, šifravimo metodas = neapibrėžtas) Eksportuoti

// Įrašykite duomenis į laikiną failą. Tiesą sakant, ne visi duomenys gali būti išsaugoti tokiu būdu.
ValueInFile(laikinas failo pavadinimas, duomenys);

// Rašyti laikinus duomenis į archyvą
Zip = naujas ZipFileRecord(Laikinojo archyvo failo pavadinimas, slaptažodis, šifravimo metodas);
Zip.Add(LaikinasisFailoPavadinimas);
Zip.Write();

// Skaityti duomenis iš gauto archyvo į RAM
EncryptedData = NewValueStorage(NewBinaryData(ArchiveTemporaryFileName));

// Laikini failai – ištrinti

EndFunctions Funkcija DecryptData (šifruoti duomenys, slaptažodis) eksportuoti

// Dėmesio! Perduotų parametrų teisingumas nėra stebimas

// Perduotą reikšmę įrašykite į failą
ArchyvasTemporaryFileName = GetTemporaryFileName("zip");
BinaryArchiveData = EncryptedData.Get();
BinaryArchiveData.Write(ArchiveTemporaryFileName);

// Išskleiskite pirmąjį ką tik parašyto archyvo failą
TemporaryFileName = GautiLaikinąFailoPavadinimas();
Zip = naujas ReadZipFile (Laikinojo archyvo failo pavadinimas, slaptažodis);
Zip.Extract(Zip.Items, TemporaryFileName, ZIPFilePathRecoveryMode.Do NotRecover);

// Perskaitykite rašytinį failą
Duomenys = ValueFromFile(TemporaryFileName + "\" + Zip.Items.Name);

//Ištrinti laikinuosius failus
Ištrinti failus (laikinas failo pavadinimas);
Ištrinti failus (ArchiveTemporaryFileName);

Grąžinti duomenis;

EndFunction

Žinoma, šio metodo negalima pavadinti idealiu – duomenys rašomi į laikiną aplanką aiškiu tekstu, o metodo veikimas, atvirai kalbant, blogesnis nei bet kada, saugojimas duomenų bazėje reikalauja itin daug vietos, tačiau tai yra vienintelis metodas, pagrįstas tik platformoje integruotais mechanizmais. Be to, jis turi pranašumą prieš daugelį kitų metodų – šis metodas kartu su šifravimu pakuoja duomenis. Jei norite įdiegti šifravimą be trūkumų, kad šis metodas, tuomet turite juos įdiegti išoriniame komponente arba pasiekti esamas bibliotekas kurdami COM objektus, pavyzdžiui, naudodami Microsoft CryptoAPI. Kaip pavyzdį pateiksime eilutės šifravimo/iššifravimo funkcijas pagal gautą slaptažodį.

Funkcija EncryptStringDES (nešifruota eilutė, slaptažodis)

CAPICOM_ENCRYPTION_ALGORITHM_DES = 2; // Ši konstanta yra iš CryptoAPI


EncryptionMechanism.Content = UnencryptedString;
Šifravimo variklis.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_DES;
EncryptedString = EncryptionMechanism.Encrypt();

grąžinti EncryptedString;

EndFunction // EncryptStringDES()

Funkcija DecryptStringDES (šifruota eilutė, slaptažodis)

//Dėmesio! Parametrai netikrinami!

Šifravimo variklis = naujas COMObject("CAPICOM.EncryptedData");
Šifravimo mechanizmas.SetSecret(Slaptažodis);
Bandymas
EncryptionMechanism.Decrypt(EncryptedString);
Išimtis
// Neteisingas slaptažodis!;
Grąžinti Neapibrėžta;
EndAttempt;

ReturnEncryptionMechanism.Content;

EndFunction // DecryptStringDES()

Atminkite, kad šioms funkcijoms perdavus tuščią reikšmę kaip eilutę arba slaptažodį, bus pateiktas klaidos pranešimas. Naudojant šią šifravimo procedūrą gauta eilutė yra šiek tiek ilgesnė nei originali. Šio šifravimo specifika yra ta, kad jei eilutę užšifruosite du kartus, gautos eilutės NEBUS identiškos.

Pagrindinės klaidos naudojant kriptografinius įrankius.

Naudojant kriptografinius įrankius dažnai daromos tos pačios klaidos:

Nepakankamas veikimo baudos įvertinimas naudojant kriptografiją.

Kriptografija yra užduotis, kuriai reikia atlikti gana daug skaičiavimų (ypač tokiems algoritmams kaip DES, 3DES, GOST, PGP). Ir net naudojant didelio našumo ir optimizuotus algoritmus (RC5, RC6, AES), negalima pabėgti nuo nereikalingo duomenų perdavimo atmintyje ir skaičiavimo apdorojimo. Ir tai beveik paneigia daugelio serverio komponentų (RAID matricų, tinklo adapteriai). Naudojant aparatinį šifravimą arba aparatinę šifravimo rakto išvedimą, atsiranda papildoma galima našumo kliūtis: duomenų perdavimo tarp papildomo įrenginio ir atminties greitis (kai tokio įrenginio veikimas gali būti nekritiškas). Kai naudojamas nedidelio duomenų kiekio šifravimas (pvz., pašto žinutė) sistemos skaičiavimo apkrovos padidėjimas nėra toks pastebimas, tačiau visiško visko ir visų šifravimo atveju tai gali labai paveikti visos sistemos veikimą.

Šiuolaikinių slaptažodžių ir raktų pasirinkimo galimybių neįvertinimas.

Šiuo metu technologijos galimybės yra tokios, kad 40-48 bitų ilgio raktą gali pasirinkti nedidelė organizacija, o 56-64 bitų ilgio raktą didelė organizacija. Tie. turi būti naudojami algoritmai, naudojantys bent 96 arba 128 bitų raktą. Tačiau dauguma raktų generuojami naudojant maišos algoritmus (SHA-1 ir kt.), pagrįstus vartotojo įvestais slaptažodžiais. Šiuo atveju raktas, kurio ilgis yra 1024 bitai, gali nepadėti. Pirma, dažnai naudojamas lengvai atspėjamas slaptažodis. Atranką palengvinantys veiksniai yra: naudojant tik vieną raidžių atvejį; žodžių, vardų ir posakių naudojimas slaptažodžiuose; žinomų datų, gimtadienių ir kt. naudojimas; naudojant „šablonus“ generuojant slaptažodžius (pavyzdžiui, 3 raidės, tada 2 skaičiai, tada 3 raidės visoje organizacijoje). Geras slaptažodis turėtų būti gana atsitiktinė tiek didžiųjų raidžių, tiek skaičių ir skyrybos ženklų seka. Klaviatūra įvestus iki 7-8 simbolių slaptažodžius, net ir laikantis šių taisyklių, galima atspėti per protingą laiką, todėl geriau, kad slaptažodis būtų bent 11-13 simbolių. Idealus sprendimas yra vengti rakto generavimo naudojant slaptažodį, pavyzdžiui, naudojant įvairias lustines korteles ir pan., tačiau tokiu atveju būtina numatyti galimybę apsisaugoti nuo šifravimo rakto laikmenos praradimo.

Nesaugus raktų ir slaptažodžių saugojimas.

Dažni šios klaidos pavyzdžiai:

  • ilgi ir sudėtingi slaptažodžiai, užrašyti ant lipnių lapelių, priklijuotų prie vartotojo monitoriaus.
  • saugoti visus slaptažodžius faile, kuris nėra apsaugotas (arba apsaugotas daug silpniau nei pati sistema)
  • elektroninių raktų saugojimas viešoje erdvėje.
  • dažnas elektroninių raktų perdavimas tarp vartotojų.

Kam daryti šarvuotas duris, jei raktas nuo jų yra po kilimėliu?

Iš pradžių užšifruotų duomenų perkėlimas į nesaugią aplinką.

Nustatydami apsaugos sistemą įsitikinkite, kad ji atlieka savo darbą. Pavyzdžiui, susidūriau su situacija (nesusijusia su 1C), kai iš pradžių šifruotas failas, programai veikiant aiškia forma, buvo patalpintas į laikiną aplanką, iš kurio buvo galima saugiai perskaityti. Dažnai aiškios formos užšifruotų duomenų atsarginės kopijos yra kažkur „ne toli“ nuo šių duomenų.

Kriptografinių įrankių naudojimas kitiems tikslams

Šifruodami perduodamus duomenis negalite tikėtis, kad duomenys bus nepasiekiami ten, kur jie naudojami. Pavyzdžiui, IPSec paslaugos jokiu būdu netrukdo taikomųjų programų serveriui „uostyti“ tinklo srautą programos lygiu.

Taigi, norėdami išvengti klaidų diegdami kriptografines sistemas, prieš diegdami turėtumėte (bent) atlikti šiuos veiksmus.

  • Išsiaiškinti:
    • Ką reikia saugoti?
    • Kokį apsaugos būdą turėtumėte naudoti?
    • Kurias sistemos dalis reikia apsaugoti?
    • Kas kontroliuos prieigą?
    • Ar šifravimas veiks visose tinkamose srityse?
  • Nustatykite, kur informacija saugoma, kaip ji bus siunčiama tinkle ir iš kokių kompiuterių bus pasiekiama informacija. Tai suteiks informacijos apie tinklo greitį, pajėgumą ir naudojimą prieš įdiegiant sistemą, o tai naudinga optimizuojant našumą.
  • Įvertinkite sistemos pažeidžiamumą įvairių tipų išpuolių.
  • Sukurti ir dokumentuoti sistemos saugos planą.
  • Įvertinti sistemos naudojimo ekonominį efektyvumą (pagrįstumą).

Išvada

Žinoma, greitoje apžvalgoje neįmanoma nurodyti visų su saugumu susijusių aspektų 1C, tačiau leiskite sau padaryti keletą preliminarių išvadų. Žinoma, šios platformos negalima pavadinti idealia – ji, kaip ir daugelis kitų, turi savų problemų organizuojant saugią sistemą. Tačiau tai jokiu būdu nereiškia, kad šių problemų negalima apeiti, priešingai, beveik visus trūkumus galima pašalinti tinkamai kuriant, įdiegus ir naudojant sistemą. Dauguma problemų kyla dėl nepakankamo konkretaus taikomosios programos sprendimo ir jo vykdymo aplinkos sukūrimo. Pavyzdžiui, standartiniai sprendimai be esminių pakeitimų tiesiog nereiškia pakankamai saugios sistemos sukūrimo.

Šis straipsnis dar kartą parodo, kad bet koks saugumo priemonių rinkinys turi apimti visus įgyvendinimo etapus: kūrimą, diegimą, sistemos administravimą ir, žinoma, organizacines priemones. Informacinėse sistemose „žmogiškasis faktorius“ (įskaitant vartotojus) yra pagrindinė grėsmė saugumui. Šis priemonių rinkinys turi būti pagrįstas ir subalansuotas: nėra prasmės ir mažai tikėtina, kad bus skirta pakankamai lėšų apsaugai, kuri viršija pačių duomenų kainą, organizuoti.

Bendrovė yra unikali paslauga pirkėjams, kūrėjams, prekiautojams ir susijusiems partneriams. Be to, tai yra vienas iš geriausios internetinės parduotuvės Programinė įranga Rusijoje, Ukrainoje, Kazachstane, kuri klientams siūlo platų asortimentą, daugybę atsiskaitymo būdų, operatyvų (dažnai momentinį) užsakymų apdorojimą, užsakymo eigos sekimą asmeninėje skiltyje.

Dalintis