نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • اخبار
  • باز کردن نرم افزار پردازش خارجی. حالت امن

باز کردن نرم افزار پردازش خارجی. حالت امن

با انتشار پلتفرم 8.3.9.2033 مکانیزم جدیدی ظاهر شد "محافظت در برابر اقدامات خطرناک".

به لطف این نوآوری، 1C اکنون در افتتاحیه پردازش (و نه تنها) شروع به سوگند خوردن کرد:

هشدار امنیتی

"My External Processing" را از فایل "My_External_Processing.epf" باز می کند.

توصیه می شود به منبعی که این فایل از آن تهیه شده است توجه کنید. اگر هیچ توافقی با منبع در مورد توسعه ماژول های اضافی وجود ندارد یا در مورد محتوای فایل تردید وجود دارد، باز کردن آن توصیه نمی شود، زیرا ممکن است به رایانه و داده ها آسیب برساند.

اجازه می دهید این فایل را باز کنم؟

بنابراین 1C تصمیم به مبارزه با کدهای مخرب گرفت!

این "کد مخرب" از کجا در یک شرکت می آید هنوز یک راز است)

اقدامات بالقوه خطرناک شامل:

  • بارگیری یک گزارش خارجی، پردازش یا پسوند پیکربندی.
  • بارگیری یا به‌روزرسانی پیکربندی/افزونه.
  • دسترسی از یک گزارش/پردازنده یا برنامه افزودنی خارجی به قابلیت های زیر:
  • اجرای فرمان سیستم عامل
  • مدیریت کاربر (ضبط یا حذف اطلاعات مربوط به یک کاربر پایگاه اطلاعاتی).
  • فراخوانی متد Connect() مدیر پردازش خارجی (گزارش ها).
  • فراخوانی متد ExtendConfiguration.Write().
  • کار با اشیاء COM

چگونه می توان این "معجزه" را خاموش کرد؟

برای انجام این کار، باید 1C Enterprise را در حالت پیکربندی راه اندازی کنید.
منوی "Administration" - "User" را انتخاب کنید.
در پنجره ای که برای کاربران ما باز می شود، باید پنجره تنظیمات کاربر را باز کنید و تیک برگه "Basic" را بردارید. "محافظت در برابر اقدامات خطرناک"

راه های دیگری برای غیرفعال کردن آن وجود دارد:

اکنون می‌توان فهرستی از پایگاه‌های اطلاعاتی را مشخص کرد که هنگام کار با آن‌ها محافظت در برابر اقدامات خطرناک غیرفعال می‌شود.
این تابع مسئول پارامتر DisableUnsafeActionProtection در فایل conf.cfg است که به شما امکان می دهد مکانیسم حفاظت در برابر اقدامات خطرناک را برای همه کاربران پایگاه های اطلاعاتی خاص که رشته های اتصال آنها ماسک های مشخص شده در پارامتر DisableUnsafeActionProtection را برآورده می کند غیرفعال کنید.

در این پارامتر می توانید چندین ماسک را که با علامت ";" از هم جدا شده اند، مشخص کنید:

DisableUnsafeActionProtection=test_.*;stage_.*;

علاوه بر این، محافظت در برابر اقدامات خطرناک کاربر را می‌توان به صورت برنامه‌ریزی غیرفعال کرد، که پارامترها و ویژگی‌های زیر در دسترس هستند:

  • حفاظت پارامتر از اقدامات خطرناک متدهای Connect() مدیران پردازش خارجی (گزارش).
  • ویژگی Protection Against Dangerous Actions شیء Configuration Extension قبل از فراخوانی متد Write() این شیء.

بررسی نیاز به استفاده از محافظت در برابر اقدامات خطرناک به ترتیب زیر انجام می شود:

1. اگر کادر انتخاب «محافظت در برابر فعالیت‌های خطرناک» کاربر فعلی پاک شود، حفاظت غیرفعال در نظر گرفته می‌شود.

2. اگر رشته اتصال به پایگاه اطلاعات یکی از الگوهای مشخص شده در پارامتر DisableUnsafeActionProtection فایل conf.cfg را برآورده کند، حفاظت غیرفعال در نظر گرفته می شود.

3. اگر حفاظت با استفاده از پارامتر Protection Against Dangerous Actions پردازش یا گزارش خارجی به صراحت غیرفعال شده باشد.

4. اگر حفاظت با استفاده از ویژگی افزونه Protection from Dangerous Actions به صراحت غیرفعال شده باشد.

با استفاده از "مدیریت تجارت 11.3" به عنوان مثال، ما فرآیند ساده اتصال یک فرم چاپ خارجی را در نظر خواهیم گرفت. همچنین ویژگی های سیستم امنیتی جدید را در نظر خواهیم گرفت.

عبور سریع

اقدامات مقدماتی

ابتدا باید فعال کردن عملکردیا در دسترس بودن آن را بررسی کنید

1. با حقوق کامل به پایگاه اطلاعاتی وارد شوید.

2. به منوی "Master Data and Administration"/Block "Administration"/Command "Printed Forms, Reports and processing" بروید.

اضافه شدن

در قسمتی که باز می شود:

ما پردازش را با استفاده از دکمه "ایجاد" (این مهم است) یا "به روز رسانی!" اضافه می کنیم. موجود:

  • آن را در لیست انتخاب کنید (اگر انتخاب نشده یا خالی باشد، دستور کار نمی کند، اما چیزی نمی گوید).
  • روی دکمه "بارگیری از فایل" کلیک کنید.

پس از ظهور 1C در پردازش خارجی، بررسی های امنیتی در پیکربندی های جدید ظاهر شد.

شما باید فقط پردازش‌هایی را نصب کنید که به‌طور مستقل یا از طریق کانال‌های ارتباطی شناخته‌شده دریافت شده‌اند (نه از طریق پست، فقط از یک وب‌سایت با گواهی معتبر، یا ارائه شده توسط کارمندان توسعه‌دهنده، تأیید شده توسط او از طریق تلفن).

اگر همه چیز در پردازش توسط توسعه‌دهنده تجویز شده باشد، "قرار دادن" تنظیم می‌شود - اشیایی که پردازش در آنها نقش دارد، فرمان(های) ظاهر می‌شوند.
برای کار، فقط روی "ضبط و بستن" کلیک کنید.

معاینه

بلافاصله پس از این، بسته به نوع درمان:

  • فرم چاپ شده هنگام باز کردن یک سند یا از لیست آن (برای سندی که قبلاً باز شده است، هنگام باز کردن مجدد آن) با کلیک کردن روی دکمه "چاپ" در دسترس می شود.
  • پردازش در بخش‌های «پردازش اضافی» در هر زیرسیستم موجود است
  • پردازش پر کردن با استفاده از دکمه "پر" لیست یا پنل فرمان اصلی فرم شی.

برای پردازش فوق، راه اندازی به صورت زیر خواهد بود:

اگر سند جدید است، باید روی آن نوشته شود، مکانیسم پردازش خارجی به شما هشدار می دهد:

رفتار بیشتر به عملکرد داخلی بستگی دارد: باز کردن یک فرم یا پردازش داده ها به سادگی امکان پذیر است.

هشدارهای امنیتی در 1C

نسخه‌ها و پیکربندی‌های جدید پلتفرم محافظت در برابر راه‌اندازی برنامه‌های مخرب را افزایش داده‌اند.

پردازش ممکن است باعث شود اکسل بارگذاری شود، در این صورت زیرسیستم امنیتی جدید نیز به شما هشدار می دهد:

در این حالت کد کنترل کننده قطع می شود.

اگر روی "بله" کلیک کنید، سیستم از شما می خواهد که دوباره دستور را اجرا کنید:

این امکان برای کاربر پایگاه اطلاعاتی وجود دارد که محافظت در برابر اقدامات خطرناک را از طریق "Configurator" غیرفعال کند:

این را نمی توان از حالت "Enterprise" تغییر داد، شاید این کار به عمد انجام شده است و ممکن است پس از به روز رسانی ظاهر شود.

همچنین لازم به ذکر است که اگر پردازش از Excel استفاده می کند، باید در حالت ناامن اجرا شود (این مورد قبل از معرفی سیستم جدید بود، این به طور موازی کار می کند):

"نمی توان MS EXCEL را بارگیری کرد!!!" «حالت ایمن تنظیم شده است. عمل ممنوع"

در پردازش خارجی به صورت زیر است:

توسعه دهنده باید آن را در توضیحات پردازش داخلی روی "False" تنظیم کند، سپس همه چیز خوب خواهد بود:

تابع InformationOnExternalProcessing() ExportRegistrationParameters = New Structure; Registration Parameters.Insert("SafeMode", False);

هنگام به روز رسانی پیکربندی، متن اخطار در مورد منبعی که فایل پیکربندی از آن به دست آمده است ظاهر می شود:

چاپ (Ctrl+P)

اشیاء پیکربندی

در صورت لزوم استفاده از کد برنامه "غیر قابل اعتماد" در سرور: پردازش خارجی یا کد برنامه ای که توسط کاربر برای استفاده در روش های Run() و Calculate() وارد شده است، می توانید از حالت عملیات ایمن استفاده کنید.

در حالت امن:

  • حالت ممتاز لغو شد.
  • ورود به حالت ممتاز نادیده گرفته شده است.
  • ممنوع استعملیات منتهی به استفاده از وسایل خارجی در رابطه با پلت فرم 1C: Enterprise (از جمله آنالوگ های غیر مسدود کننده روش های مشخص شده):
  • مکانیسم های COM:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • بارگیری اجزای خارجی:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • دسترسی به فایل سیستم:
    • ValueInFile();
    • فایل را کپی کن()؛
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • فایلهاروحذف کن()؛
    • فایل جدید؛
    • xBase جدید؛
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadFastInfoset.OpenFile();
    • EntryFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • ReadText()، اگر اولین پارامتر یک رشته باشد.
    • ReadText.Open()، اگر اولین پارامتر یک رشته باشد.
    • NewTextRecord()، اگر اولین پارامتر یک رشته باشد.
    • WriteText.Open()، اگر اولین پارامتر یک رشته باشد.
    • NewTextExtract();
    • تغییر ویژگی ExtractText.FileName.
    • ExtractText.Write();
    • New Picture()، اگر اولین پارامتر یک رشته باشد.
    • Picture.Write();
    • BinaryData ();
    • BinaryData.Write();
    • NewDataRecord()، اگر اولین پارامتر یک رشته باشد.
    • New ReadData()، یک پارامتر اول وجود دارد - یک رشته.
    • تمام متدهای شی FileStreamManager.
    • New FileStream();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • دسترسی به اینترنت:
    • اتصال به اینترنت جدید،
    • پست اینترنتی جدید،
    • اینترنت پروکسی جدید،
    • اتصال HTTP جدید،
    • FTPConnection جدید

توجه! هنگام انجام عملیات ممنوعه، یک استثنا در زمان اجرا ایجاد می شود.

توجه داشته باشید. گزارش‌های خارجی و پردازش باز شده با استفاده از منوی File - Open در حالت امن اجرا می‌شوند اگر کاربر حقوق دسترسی مدیریتی نداشته باشد.

تعداد دفعاتی که حالت ایمن روشن می شود باید با تعداد دفعات خاموش شدن آن مطابقت داشته باشد. با این حال، اگر حالت ایمن در یک رویه یا عملکرد (یک یا چند بار) روشن شده باشد، اما خاموش نشده باشد، سیستم به تعداد دفعات روشن شدن ناقص رویه یا عملکرد باقیمانده به طور خودکار خاموش می شود.

اگر در یک رویه یا تابع یک متد را فراخوانی کند SetSafeMode (نادرست)فراخوانی بیش از روش انجام شده است SetSafeMode (درست)، سپس یک استثنا پرتاب می شود.

زمانی که توسعه‌دهنده پیکربندی قصد دارد از کد برنامه شخص ثالث (در رابطه با پیکربندی) استفاده کند، نصب نرم‌افزار حالت امن ممکن است مورد نیاز باشد، که توسعه‌دهنده نمی‌تواند قابلیت اطمینان آن را تضمین کند. نمونه ای از این کدها اجرای متدهای Execute() و Compute() در مواردی است که کد اجرایی از دنیای خارج به دست می آید. در این مورد، یک تمرین خوب این است که قبل از اجرای این روش‌ها، حالت Safe Mode را تنظیم کنید:

// کد برنامه تولید می شود که باید اجرا شود // این امکان وجود دارد که کد از منابع خارجی بارگیری شود // یا به صورت دستی وارد شود ExecutableCode = GetExecutedCodeFromExternalWorld(); // فعال کردن حالت ایمن SetSafeMode(True); // اجرای کد بالقوه خطرناک Execute(ExecutableCode); // خاموش کردن حالت ایمن SetSafeMode(False);

در برخی موارد، تنظیمات حالت ایمن ممکن است با تنظیمات حالت ممتاز مغایرت داشته باشد. نمونه ای از این تضاد، ارسال سندی است که حالت Privileged هنگام ارسال ویژگی برای آن تنظیم شده است، از کدی در زبان داخلی که در حالت امن اجرا می شود. در این حالت، حالت ممتاز غیرفعال می شود و تلاش برای فعال کردن آن نادیده گرفته می شود. در نتیجه، کد موجود در زبان تعبیه شده، که بر روی حالت ممتاز فعال "شمار می‌شود" با عدم وجود آن مواجه می‌شود که منجر به خطاهایی با دلایل غیر واضح برای ظاهر آنها می‌شود. برای جلوگیری از این وضعیت، سیستم 1C:Enterprise به‌طور خودکار حالت امن را برای کنترل‌کننده‌های رویداد که در ماژول شی یا ماژول مدیر موجود هستند غیرفعال می‌کند، مشروط بر اینکه کد اجرایی در زبان داخلی در پسوند پیکربندی قرار نگیرد. چنین کنترل کننده هایی به روشی خاص در دستیار نحو مشخص می شوند.

همچنین امکان غیرفعال کردن Safe Mode از زبان داخلی را فراهم می کند (اگر کد برنامه ای که سعی در غیرفعال کردن آن دارد در پسوند پیکربندی نباشد). برای غیرفعال کردن حالت ایمن روشی وجود دارد SetDisableSafeMode(). با استفاده از روش می توانید بررسی کنید که حالت ایمن در حال حاضر غیرفعال است (به طور خودکار یا با فراخوانی یک روش). GetDisableSafeMode().

در یک متد در زبان داخلی، نمی‌توان بیش از یک سطح تودرتو برای تنظیم حالت امن (با فراخوانی متد SetSafeMode()) و غیرفعال کردن حالت امن (به طور خودکار در حین اجرای رویداد شی فراداده) وجود داشته باشد. هندلرها یا با فراخوانی متد SetSafeModeDisable()). هنگام تلاش برای افزایش لانه سازی، یک استثنا پرتاب می شود:

// استفاده صحیح از ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode(true); SetSafeMode (نادرست)؛ SetDisableSafeMode (نادرست)؛ EndProcedure // استفاده نادرست از ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode(true); SetDisableSafeMode (نادرست)؛ // Exception EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode (نادرست)؛ // Exception EndProcedure

هنگامی که برنامه بارگذاری سند را به عنوان یک کاربر معمولی اجرا می کنید، خطای "حالت ایمن تنظیم شده است. عملیات ممنوع است."

این دشواری به دلیل اینکه حقوق کافی برای شروع پردازش خارجی وجود ندارد. برای پیکربندی حقوق دسترسی، در حالت 1C Enterprise از طرف خود وارد پایگاه داده شوید مدیرو به بخش بروید تنظیمات کاربر و حقوق / دسترسی به پروفایل های گروه،کلیک برای ایجاد یک گروه.

نام گروه را وارد کنید و کادرهای مربوط به نقش های موجود برای کاربران این گروه را علامت بزنید -

  • باز کردن تعاملی گزارش‌های خارجی و پردازش
  • استفاده از گزارش ها و پردازش های اضافی

کلیک ذخیره کن و ببند


به منوی Users برگردید و از لیست کارمندی را انتخاب کنید که با برنامه Upload Document کار می کند. روی Permissions کلیک کنید. در لیست پروفایل ها، نمایه ایجاد شده قبلی را انتخاب کنید. کلیک بنویس.


برای اینکه کاربران بتوانند پردازش را شروع کنند، توصیه می شود Document Loading را به لیست پردازش های خارجی اضافه کنید. برای انجام این کار در منو مدیریت / فرم های چاپی و پردازش / گزارش های اضافی و پردازشیک پردازش جدید ایجاد کنید مسیر فایل "Download Documents.epf" را مشخص کنید و یک نام اختصاص دهید. محل پردازش را در منو مشخص کنید، از جایی که کاربر می تواند بعداً آن را راه اندازی کند، به عنوان مثال، منو را انتخاب کنید دایرکتوری ها

با کلیک بر روی آیتم دسترسی سریع، مشخص می کنید که کدام کاربران به پردازش دسترسی دارند:


پس از تنظیم، کلیک کنید ذخیره کن و ببند. برای شروع پردازش، کاربران فقط باید دوباره وارد پایگاه داده شوند و آن را از منوی دسترسی باز کنند (در مثال - Directories) و کلیک کنند اجرا کردن.


باز کن منو - همه توابع .... و گزینه "Security profiles are used" را در لیست پیدا کنید.


فقط تیک گزینه "Security profiles are used" را بردارید.


پس از این، برنامه با موفقیت راه اندازی می شود.

باز کردن برنامه ای پردازش خارجی با استفاده از شیء زمینه جهانی ExternalProcessing که دارای نوع است انجام می شود External Processing Manager. برای هر حالت عملیاتی پلت فرم 1C (حالت برنامه معمولی و حالت برنامه مدیریت شده)، از روش های شی متفاوت برای کار با پردازش خارجی استفاده می شود.

اجرای پردازش خارجی در حالت برنامه معمولی

در یک برنامه معمولی، باید از متد Create() شی ExternalProcessing استفاده کنید که نام کامل فایل پردازش خارجی به آن ارسال می شود. متد یک شی از نوع را برمی گرداند پردازش خارجی، این شیء پردازش خارجی در حال باز شدن است. اگر نیاز به باز کردن یک فرم پردازش خارجی دارید، سپس متد GetForm() را روی شی دریافتی فراخوانی کنید که فرم اصلی را برمی گرداند و سپس متد Open() را برای باز کردن آن فراخوانی کنید.


پردازش = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();

در پردازش خارجی، فرم اصلی همیشه باید یک فرم معمولی باشد، و فرم کنترل شده باید همیشه یک فرم اضافی باشد، در غیر این صورت متد GetForm() در حالت نرمال برنامه کار نخواهد کرد.

اجرای پردازش خارجی در حالت برنامه مدیریت شده

در حالت فرم های مدیریت شده، الگوریتم بر اساس زمینه اجرا تقسیم می شود. در کلاینت، ما داده های باینری را با استفاده از نام کامل فایل پردازش خارجی دریافت می کنیم. داده های باینری دریافتی را به سرور منتقل می کنیم و در ذخیره سازی موقت قرار می دهیم. در مرحله بعد، باید متد Connect() شی ExternalProcessing را فراخوانی کنید، که آدرس ذخیره سازی موقت به آن ارسال می شود. این روش نام پردازش خارجی متصل را برمی گرداند. ما نام پردازش خارجی را به مشتری برمی گردانیم، یک مسیر رشته ای به فرم پردازش ایجاد می کنیم و از متد OpenForm() برای باز کردن فرم پردازش خارجی استفاده می کنیم.

&روی سرور
تابع GetExternalProcessingName (BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
ExternalProcessing.Connect(AddressInTemporaryStorage) را برگردانید.
EndFunction

&OnClient
FullFileName = ""; // نام کامل فایل پردازش خارجی.
FileData = BinaryData جدید (FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm ("ExternalProcessing." + ExternalProcessingName + ".Form");

حالت ایمن برای پردازش خارجی

متدهای Create() و Connect() شیء External Processing دارای یک پارامتر ورودی SafeMode هستند - نشانه ای از اتصال پردازش خارجی در حالت امن. اگر پارامتر مشخص نشده باشد، اتصال در حالت امن انجام می شود.
حالت ایمن برای محافظت از سیستم در برابر اجرای کد برنامه "غیر قابل اعتماد" روی سرور طراحی شده است. خطر بالقوه از پردازش خارجی یا کد برنامه وارد شده توسط کاربر برای استفاده در متدهای Run() و Calculate() می آید.
حالت ایمن محدودیت های زیر را اعمال می کند:
  • حالت ممتاز در صورت نصب لغو می شود.
  • تلاش برای ورود به حالت ممتاز نادیده گرفته می شود.
  • عملیات با اشیاء COM ممنوع است.
  • بارگیری و اتصال اجزای خارجی ممنوع است.
  • دسترسی به سیستم فایل ممنوع است (به جز فایل های موقت).
  • دسترسی به اینترنت ممنوع است.
فرآیندهایی که به صورت تعاملی باز می شوند در حالت ایمن انجام نمی شوند، بنابراین توصیه می شود مکانیزمی را برای باز کردن پردازنده های خارجی در حالت ایمن و همچنین در سطح مجوز پیاده سازی کنید تا کاربر را از باز کردن تعاملی پردازنده های خارجی منع کنید.
برای جلوگیری از باز شدن تعاملی پردازش، در همه نقش‌هایی که به کاربر اختصاص داده می‌شود، باید «باز تعاملی پردازش خارجی» سمت راست را حذف کنید (شکل 1 را ببینید).
شکل 1. حقوق باز کردن تعاملی پردازش/گزارش های خارجی
حق "باز کردن تعاملی پردازش خارجی" به هیچ وجه بر شیء پردازش خارجی تأثیر نمی گذارد.

باز کردن برنامه‌ای گزارش‌های خارجی شبیه به پردازش خارجی است، اما باید از شیء متن کلی ExternalReports استفاده کنید که دارای نوع ExternalReports Manager.

بهترین مقالات در این زمینه