نحوه اضافه کردن صفحه چاپ خارجی یا پردازش حالت ایمن Pavel Chistov 8.3 نصب شده است، عملیات ممنوع است

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

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

هشدار امنیتی

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

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

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

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

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

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

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

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

برای انجام این کار، باید 1C Enterprise را در حالت پیکربندی راه اندازی کنید.
منوی "اداره" - "کاربران" را انتخاب کنید.
در پنجره ای که برای کاربران ما باز می شود، باید پنجره تنظیمات کاربر را باز کنید و تیک برگه "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 به صراحت غیرفعال شده باشد.

واقعیت این است که هنگام استفاده از نسخه سرویس گیرنده-سرور 1C، پردازش / گزارش های خارجی در حالت ایمن باز می شوند که در آن استفاده از حالت ممتاز ممنوع است. و حالت ممتاز اغلب در پیکربندی های معمولی استفاده می شود: تولید فرم های چاپی، بررسی های مختلف خدمات (ثبت صرافی ها) و غیره. در نتیجه، حتی با استفاده از یک گزارش معمولی در سیستم کنترل دسترسی بدون فرم (به طور پیش فرض، از فرم کلی "ReportForm" استفاده می شود) و ذخیره تنظیمات گزارش سفارشی (در دایرکتوری مربوطه)، خطای دسترسی ناکافی را دریافت خواهید کرد. حقوق ثابت های مختلف و پارامترهای جلسه مورد استفاده برای اهداف رسمی بعد از خط SetPrivilegedMode(True);

راه‌حل «صحیح» اتصال پردازش‌ها و گزارش‌های خارجی از طریق مکانیسم‌های «گزارش‌های اضافی و پردازش» BSP با غیرفعال کردن حالت امن یا اضافه کردن مجوزها (به نظر من، از BSP نسخه 2.2.2.1) است. اما اگر به دلایلی استفاده از فایل‌های گزارش/پردازش خارجی ضروری است، می‌توانید یک نمایه امنیتی خوشه‌ای را که به عنوان نمایه امنیتی حالت امن برای یک پایگاه اطلاعاتی خاص استفاده می‌شود، پیکربندی کنید.

من می خواهم بلافاصله توجه داشته باشم که این گزینه ارجح نیست، اما به دلیل شرایط مختلف می توان از آن به شکل ساده استفاده کرد. به عنوان مثال، من چندین پایگاه داده در شهرهای مختلف دارم، یک پایگاه داده مشترک محلی با حقوق کاملاً محدود، USB بسته و غیره، در جایی از Accounting 2.0 استفاده می کنم و در جایی از 3.0 تقریباً همه گزارش ها را با استفاده از ابزارهای ACS بدون فرم تهیه می کنم. در هر دو نسخه باز شد نگهداری همه این گزارش‌ها برای نسخه‌های مختلف و پایگاه‌های اطلاعاتی مختلف، کار فشرده و بیهوده است، زیرا برنامه هایی برای تغییر به یک پیکربندی و پایه وجود دارد...

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

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

P.S. من فکر می کردم که نمایه های امنیتی فقط هنگام استفاده از مجوزهای پلت فرم و سرور در سطح CORP کار می کنند، اما این عملکرد روی پلت فرم 1C:Enterprise 8.3 نیز کار می کند (می توان آن را به طور مشروط PROF نامید، به قیاس با تنظیمات استاندارد Basic/PROF/CORP)

واقعیت این است که هنگام استفاده از نسخه سرویس گیرنده-سرور 1C، پردازش / گزارش های خارجی در حالت ایمن باز می شوند که در آن استفاده از حالت ممتاز ممنوع است. و حالت ممتاز اغلب در پیکربندی های معمولی استفاده می شود: تولید فرم های چاپی، بررسی های مختلف خدمات (ثبت صرافی ها) و غیره. در نتیجه، حتی با استفاده از یک گزارش معمولی در سیستم کنترل دسترسی بدون فرم (به طور پیش فرض، از فرم کلی "ReportForm" استفاده می شود) و ذخیره تنظیمات گزارش سفارشی (در دایرکتوری مربوطه)، خطای دسترسی ناکافی را دریافت خواهید کرد. حقوق ثابت های مختلف و پارامترهای جلسه مورد استفاده برای اهداف رسمی بعد از خط SetPrivilegedMode(True);

راه‌حل «صحیح» اتصال پردازش‌ها و گزارش‌های خارجی از طریق مکانیسم‌های «گزارش‌های اضافی و پردازش» BSP با غیرفعال کردن حالت امن یا اضافه کردن مجوزها (به نظر من، از BSP نسخه 2.2.2.1) است. اما اگر به دلایلی استفاده از فایل‌های گزارش/پردازش خارجی ضروری است، می‌توانید یک نمایه امنیتی خوشه‌ای را که به عنوان نمایه امنیتی حالت امن برای یک پایگاه اطلاعاتی خاص استفاده می‌شود، پیکربندی کنید.

من می خواهم بلافاصله توجه داشته باشم که این گزینه ارجح نیست، اما به دلیل شرایط مختلف می توان از آن به شکل ساده استفاده کرد. به عنوان مثال، من چندین پایگاه داده در شهرهای مختلف دارم، یک پایگاه داده مشترک محلی با حقوق کاملاً محدود، USB بسته و غیره، در جایی از Accounting 2.0 استفاده می کنم و در جایی از 3.0 تقریباً همه گزارش ها را با استفاده از ابزارهای ACS بدون فرم تهیه می کنم. در هر دو نسخه باز شد نگهداری همه این گزارش‌ها برای نسخه‌های مختلف و پایگاه‌های اطلاعاتی مختلف، کار فشرده و بیهوده است، زیرا برنامه هایی برای تغییر به یک پیکربندی و پایه وجود دارد...

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

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

P.S. من فکر می کردم که نمایه های امنیتی فقط هنگام استفاده از مجوزهای پلت فرم و سرور در سطح CORP کار می کنند، اما این عملکرد روی پلت فرم 1C:Enterprise 8.3 نیز کار می کند (می توان آن را به طور مشروط PROF نامید، به قیاس با تنظیمات استاندارد Basic/PROF/CORP)

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

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

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

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

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


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


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

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


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


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

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