سؤال

لقد حصلت على C++ الخدمة الذي يوفر المسمى للعملاء مع NULL SECURITY_ATTRIBUTES على النحو التالي:

hPipe = CreateNamedPipe( lpszPipename, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, BUFSIZE, BUFSIZE, 0, NULL);

هناك dll التي تستخدم هذه الأنابيب للحصول على الخدمات.

وهناك c# واجهة المستخدم الرسومية التي يستخدم dll و يعمل بشكل جيد.

هناك .صافي موقع ويب الذي يستخدم أيضا هذا dll (نفس واحد على نفس الكمبيوتر) ولكن دائما يحصل على الإذن مرفوض عند محاولة فتح الأنابيب.

أي واحد يعرف لماذا هذا قد يحدث و كيفية إصلاحه ؟

أيضا لا أحد يعرف من تعليمي جيد على SECURITY_ATTRIBUTES لأنني لم يفهم msdn معلومات حتى الآن.

شكرا باتريك

هل كانت مفيدة؟

المحلول

الافتراضي ACL المسماة (ما تحصل عليه مع null واصف الأمان) منح حق الوصول فقط إلى LocalSystem والإداريين و الأنابيب مالك/الخالق.إلا الويب الخاص بك تشغيل التطبيق تحت واحد من هذه الحسابات (افتراضيا فإنه لن يكون) لن تكون قادرة على الحصول على حق الوصول للكتابة.(أفترض أنك تسأل عن قراءة/كتابة.)

وهناك زوجين من الخيارات...

  1. لديك تطبيق ويب تعمل تحت نفس حساب خدمة إنشاء الأنبوب.

  2. تكوين تطبيق ويب تستخدم الانتحال ، إما عن طريق تحديد مستخدم معين مع وصول الكتابة في شبكة الإنترنت.التكوين أو الإعداد لاستخدام المستخدم مرت في IIS (و الوصول إلى التطبيق من حساب المستخدم حق الوصول للكتابة).

  3. يدويا انتحال شخصية المستخدم مع وصول الكتابة لمدة الأنابيب الوصول (على سبيل المثال ، مع WindowsIdentity.انتحال شخصية).

  4. استخدام غير واصف الأمان الافتراضي على الأنابيب التي منح حق الوصول للكتابة إلى الجميع (أو حساب تشغيل التطبيق ، على الرغم من أنه سيكون أكثر تعقيدا إعداد).

هناك مثال على خلق بسيط واصف الأمان هنا;يجب أن تكون قادرا على تعديل لتناسب الاحتياجات الخاصة بك.

نصائح أخرى

وتحقق نوع من المصادقة في استخدام على موقع على شبكة الإنترنت ASP.NET، وإعدادات الانتحال في ملف web.config لهذا الموقع. فرص و، وتشغيل التعليمات البرمجية ASP.NET تحت حساب أنه لا يسمح لإنشاء أنابيب اسمه على جهازك.

وأنت قد تكون قادرة على اصلاحها من خلال منح المزيد من الصلاحيات للحساب قيد الاستخدام من قبل التطبيق ASP.NET، أو عن طريق تكوين هذا التطبيق على شبكة الإنترنت لاستخدام (أكثر عالية متميز) حساب مختلف. أما وقد قلت ذلك، هل تريد حقا للزوار عن بعد إلى موقع الويب الخاص بك لتكون قادرة على إنشاء أنابيب اسمه؟ أنا لن محاضرة لكم، وأنا أفترض كنت قد فكرت في ذلك.

والأكثر ودود، وشامل، ووصف SECURITY_ATTRIBUTES رأيت من أي وقت مضى في هذا الكتاب من قبل كيث براون ... <لأ href = "http://www.amazon.co.uk/gp/product/0201604426 "يختلط =" noreferrer نوفولو "> http://www.amazon.co.uk/gp/product/0201604426 .

إضافة السطر:

< انتحال الهوية="true"/>

إلى < النظام.ويب> قسم من شبكة الإنترنت.ملف التكوين يسمح الوصول إلى الأنابيب.أنا لا أنصح الآخرين من استخدام هذا وأنا لست متأكدا من الآثار الأمنية لكنه يناسب متطلباتنا الآن.

شكرا إلى كل من إريك مارتن على إعطائي المؤشرات في الاتجاه الصحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top