سؤال

يجب تطبيق ويب يستخدم CDO كائن رسالة إلى البريد الإلكتروني التقارير.

على سبيل المثال:

Dim objCDO
Set objCDO = Server.CreateObject("CDO.Message")
objCDO.CreateMHTMLBody "http://server/report.asp"

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

objCDO.CreateMHTMLBody "http://server/report.asp?userid=xx&password=xx"

بالتأكيد يجب أن يكون هناك طريقة التفويض في التقرير أن تحقق ما إذا كان جاء بناء على طلب من الجهاز المحلي أيالكائن CDO في الارسال النصي ، مما يلغي الحاجة إلى المصادقة ؟

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

المحلول

فقط لا تفعل ذلك!لهذه الأسباب:-

  • مما يجعل الطلب الثاني مرة أخرى إلى الخادم سوف يسبب الترابط الحالي إلى كتلة ، إذا كان لديك الكثير من هؤلاء سوف الجمود التطبيق.
  • CreateHTMLBody internaly يستخدم WinINET http كومة لجعل الطلب.هذا المكدس هو المقصود للاستخدام في العميل التفاعلية السيناريوهات.في الخادم السيناريو ليس مؤشر الترابط-الآمن.
  • تفقد كل دورة سياق لذلك يمكن (كما كنت اكتشاف) جعل الأشياء أكثر صعوبة أو أقل أمنا.وبالإضافة إلى ذلك فإنه يمكن إنشاء الحمل غير المرغوب فيه دورات.

في حين الحقيقية CreateHTMLBody يمكن جدا كونفينينت فإنه يمكن أيضا إنشاء المتضخمة رسائل البريد الإلكتروني.السيرفر في حالة كنت حقا بحاجة إلى صياغة البريد الإلكتروني مع رمز بدلا من استخدام هذا الأسلوب المغري.

تحرير

يبدو جيمبو أكثر العامة السيناريوهات في العقل من مجرد CreateHTMLBody.العامة السيناريو هو أن عنصر (على المستهلك لديه أي سيطرة) يستخدم في صفحة ASP (ونحن سوف تعيين هذا "العميل الصفحة") ويجعل طلب لاحق (يحتمل أن تكون عبر WinINET) إلى آخر صفحة ASP (ونحن سوف تعيين هذا "صفحة الخدمة").هناك افتراض أن الشيء الوحيد الذي "صفحة العميل" يمكن التحكم حول استخدام عنصر URL الموردة إلى ذلك.

وفيما يلي بعض الأساليب لتجنب أو التخفيف من القضايا المبينة أعلاه.

التعامل مع مشكلات تأمين: وضع "صفحة العميل" و "صفحة الخدمة" في تطبيق ASP تجنب قفل القضايا.سيكون اقتراحي وضع "صفحة العميل" في مختلف التطبيقات إلى بقية التطبيقات و أن هذا التطبيق الجديد سيكون في مجلد فرعي من التطبيق الرئيسي.

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

السيطرة على الأمن: تكوين "صفحة الخدمة" لقبول طلبات العملاء "صفحة".ربما يكون هناك عدد من الطرق للقيام بذلك ولكن أبسط هو تمكين القائمة على بروتوكول الإنترنت الأمن, الطلبات إلى "خدمة صفحة" يجب أن يكون فقط قادمة من IP محدد أو على الأقل مجموعة محدودة من عناوين IP.

التعامل مع التوثيق: خلال التطبيق الرئيسية تسجيل الدخول إنشاء متقلبة الكعكة التي تحتوي على بعض قيمة فريدة من نوعها.منذ "صفحة العميل" ينظر إلى مجلد فرعي من التطبيق الرئيسي من قبل المتصفح سوف تتلقى ملف تعريف الارتباط هذا."العميل صفحة" يمكن استخدام ملف تعريف الارتباط هذا إلى تأكيد صحة الطلب و/أو تمرير ذلك في عنوان URL عند استخدام عنصر.

Supressing غزير الدورة الخلق: لديك "خدمة صفحة" اتصل Session.Abandon قبل أن يكمل العملية.

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