سؤال

أنا أبحث عن طريقة بسيطة لتشفير اتصالات الصابون الخاصة بي في خدمة الويب C# الخاصة بي.

كنت أبحث في دبليو إس إي 3.0 ولكن يبدو أن Microsoft قد أسقطت الدعم لها، وبالتالي فهي ليست سهلة الاستخدام.
يبدو أن WCF كان من الممكن أن يكون خيارًا لكنني أفضل عدم الترقية من .NET 2.0.

أي بسيط, طريقة التشفير المباشرة؟

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

المحلول

أعتقد أن هذا يمكن أن يساعد.استخدمنا هذا في العام الماضي لضغط خدمات الويب وكان أداؤه جيدًا للغاية، وأعتقد أنه يمكن تعزيزه بفئات التشفير؛

إنشاء ملحقات SOAP مخصصة - امتداد الضغط

نصائح أخرى

من المحتمل أن يكون أي شيء تفعله لتوفير "التشفير" الذي لا يستخدم SSL/TLS عرضة للخطر.الآن عليك أن تسأل نفسك، هل يستحق الأمر حرق ساعات التطوير التي يمكن أن تقضيها على ميزات تتعلق بإجراء أمني مطاط؟ربما تكون.

تعمل واجهات برمجة تطبيقات .NET مثل DPAPI وWin32 crypt32 API على تسهيل تشفير البيانات الكبيرة الحجم باستخدام مفاتيح ثابتة.ولكن كيف سيحصل عملاؤك على المفاتيح؟سيتعين على أي عميل SOAP مثبت إما نسخ المفتاح في تكوينه، أو استلامه عبر الإنترنت غير الآمن.

هذه هي المشكلة التي يحلها SSL/TLS لك؛الرقصة التي تقوم بها بشهادات TLS هي ما يحل مشكلة توصيل المفاتيح العامة عبر قنوات غير موثوقة.

ربما أكون ساذجًا ، لكنني سأجبر التواصل على أن يكون عبر HTTPS مقبولًا؟أقوم بتطوير خدمات الويب التي تعمل على 2.0 وحصلت على نجاح مع مجرد الحصول على IIS لفرض HTTPS على الدليل الظاهري.

ستكون هذه أبسط طريقة للذهاب على الأرجح ، لكن لسوء الحظ ، ليس لدي تحكم في تكوين IIS ، ولا يمكنني ضمان أنه يمكن تشغيل HTTPS.

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

ربما أكون ساذجًا، لكن هل سيكون إجبار الاتصال عبر https أمرًا مقبولاً؟أقوم بتطوير خدمات الويب التي تعمل على الإصدار 2.0 وحققت نجاحًا بمجرد جعل IIS يفرض https على الدليل الظاهري.

بدلا من ذلك، أو بالإضافة إلى ذلك، يمكنك التحقق من خاصية HttpRequest.IsSecureConnection.

نحن في الواقع نستخدم WSE 3.0 في خدمات الويب لدينا، والتي تم تطويرها في الأصل قبل WCF.لأغراض الأمان، نستخدم نظامًا يعتمد على رمز SAML المميز والمبني على فئات التشفير في System.Security.

أنه يعمل بشكل جيد جدا.ومع ذلك، هذه الطريقة ليست بأي حال من الأحوال "بسيطة".

يمكنك استخدام تشفير المعلمات في لغة C# باستخدام ملحق System.Security.Cryptography.

سيكون تشفير المعلمات الخاصة بك وفك تشفيرها أصعب ولكنه أكثر أمانًا.

كيف:تشفير البيانات وفك تشفيرها باستخدام مفتاح متماثل (Rijndael) (C#/VB.NET)

أنا أستخدم هذا النهج لخدمة ويب OTP (كلمة مرور لمرة واحدة)، وهو يعمل بشكل جيد بالنسبة لي.

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