كيفية استخدام قاعدة البيانات وجلسات عمل آسيا والمحيط الهادئ لتطبيق أمان ASP

نوصي بشدة بأن كافة المستخدمين بالترقية إلى Microsoft معلومات خدمات الإنترنت الإصدار 6.0 يقوم بتشغيل Microsoft Windows Server 2003. IIS 6.0 ملحوظ زيادة أمان البنية الأساسية لموقع ويب. لمزيد من المعلومات حول الموضوعات المتعلقة بأمان IIS، قم بزيارة موقع Microsoft التالي على الويب:

ملخص

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

المتطلبات الأساسية

  • محطة عمل Microsoft Windows NT 4.0 ملقم Windows NT 4.0، نظام التشغيل Microsoft Windows 2000 Professional، Windows 2000 Server، خادم متقدم Windows 2000 أو نظام التشغيل Microsoft Windows Server 2003
  • Microsoft إنترنت Information Server (IIS) 4.0 لأجهزة الكمبيوتر التي تشغل Windows NT 4.0 أو Microsoft إنترنت خدمات معلومات (IIS) 5.0 لأجهزة الكمبيوتر التي تشغل Windows 2000 أو Microsoft إنترنت خدمات معلومات (IIS) 6.0 لأجهزة الكمبيوتر التي تشغل Windows Server 2003
  • Microsoft SQL Server 6.5 أو أحدث من SQL Server

كيفية تصميم هذا التطبيق

يوضح هذا القسم بإيجاز الخطوات المطلوبة لتطبيق يستند إلى نماذج الأمان أو أمان مخصص على تطبيق ويب ASP:
  1. يقدم نموذج تسجيل دخول للمستخدم.
  2. التحقق من صحة بيانات اعتماد المستخدم على معلومات المستخدم التي يتم تخزينها في قاعدة بيانات المستخدم.
  3. إنشاء متغير جلسة عمل وتعيين قيمته إلى معرف المستخدم.
  4. لكل طلب لاحق يجعل المستخدم، التأكد من أن قيمة هذا المتغير جلسة العمل لا يساوي سلسلة فارغة ("") لتأكيد أن المستخدم بتسجيل الدخول.
  5. إذا كان المتغير فارغاً، المستخدم غير صالحة لمستخدم أو قيام المستخدم بتسجيل من جلسة العمل. إعادة توجيه المستخدم إلى صفحة تسجيل الدخول إذا كان المتغير فارغاً.
  6. في حالة فشل تسجيل الدخول للمستخدم غير موجود في قاعدة البيانات، المستخدم قد لا يتم تسجيل في الموقع الخاص بك حتى الآن. إعادة توجيه المستخدم إلى صفحة Register.asp بحيث يمكن تسجيل المستخدم في موقعك. عندما يسجل المستخدم، تضاف هذه التفاصيل المستخدم إلى قاعدة بيانات المستخدم.
  7. توفير ارتباط إلى تسجيل خروج الصفحة على كافة الصفحات استثناء صفحة تسجيل الدخول حتى يمكن للمستخدم تسجيل من جلسة العمل. مسح هذه الصفحة متغير جلسة عمل التي تحتضن معرف المستخدم عن طريق تعيين سلسلة فارغة ("").

إنشاء جدول قاعدة بيانات المستخدم

  1. انقر فوق ابدأثم انقر فوق تشغيل، اكتب "المفكرة" في المربع فتح واضغط على ENTER لبدء تشغيل برنامج "المفكرة".
  2. تمييز البرنامج النصي SQL التالي وانقر نقراً مزدوجاً فوق البرنامج النصي ثم انقر فوق نسخ. في المفكرة، انقر فوق لصق في القائمة تحرير .
    CREATE TABLE [Users] ([uid] [varchar] (25) NOT NULL ,
    [password] [varchar] (25) NOT NULL ,
    CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
    (
    [uid]
    ) ON [PRIMARY]
    ) ON [PRIMARY]
    GO

  3. من القائمة ملف ، انقر فوق حفظ. في المربع اسم الملف ، اكتب User.txt.
  4. انقر فوق ابدأوأشر إلى البرامج، وأشر إلى Microsoft SQL Serverوثم انقر فوق استعلام محلل. في مربع الحوار الاتصال ب SQL Server ، حدد اسم الخادم الذي يقوم بتشغيل SQL Server ومعرف المستخدم وكلمة المرور الاتصال ب SQL Server.
  5. من القائمة ملف ، انقر فوق فتح. في مربع الحوار فتح ، انقر فوق "كافة الملفات" (*. *) في المربع أنواع الملفات . انقر فوق User.txt في القائمة ومن ثم انقر فوق فتح.
  6. في المربع DB على شريط الأدوات، حدد قاعدة البيانات التي تريد إنشاء هذا الجدول. إذا لم تكن قاعدة بيانات محددة لهذا الغرض، انقر فوق لإنشاء هذا الجدول في قاعدة بيانات Pubs.
  7. بعد تحديد قاعدة البيانات، انقر فوق تنفيذ القائمة الاستعلام لتشغيل الاستعلام. هذه الخطوة بإنشاء جدول مستخدمين في قاعدة البيانات المحددة.

إنشاء وتكوين الدليل الظاهري

  1. في "مستكشف Windows" بإنشاء مجلد ضمن جذر ويب. بشكل افتراضي، هو جذر ويب SystemDrive: \Inetpub\Wwwroot. اسم المجلد أسبسيكوريب.
  2. فتح إنترنت خدمات إدارة Microsoft Management Console (MMC).

    ملاحظة: في Windows NT 4.0، يسمى هذا MMC إدارة خدمات الإنترنت.
    • لفتح "إدارة خدمات إنترنت" على كمبيوتر يشغل Windows 2000 أو Windows Server 2003، انقر فوق ابدأ، انقر فوق
      تشغيل،
      inetmgr في المربع فتح ، وثم اضغط على ENTER.
    • لفتح إدارة خدمة إنترنت على كمبيوتر الذي يقوم بتشغيل Windows NT 4.0، اتبع الخطوات التالية:
      1. انقر فوق ابدأوأشر إلى البرامج، وأشر إلى Windows NT 4.0 Option Packوثم انقر فوق ملقم معلومات إنترنت ل Microsoft.
      2. انقر فوق إدارة خدمة إنترنت.
  3. قم بتوسيع الجهازثم قم بتوسيع موقع ويب الافتراضي. انقر نقراً مزدوجاً فوق المجلد أسبسيكوريب الذي قمت بإنشائه في الخطوة 1، ومن ثم انقر فوق خصائص.
  4. ضمن علامة التبويب الدليل في مربع الحوار خصائص ، انقر فوق إنشاء ضمن المقطع إعدادات التطبيق لوضع علامة على الدليل كتطبيق.

إنشاء نماذج صفحات

ملاحظة: إذا كنت تستخدم برنامج "المفكرة" لإنشاء هذه الصفحات، تأكد من النقر فوق كافة الملفات في المربع حفظ بنوع في مربع الحوار حفظ باسم عند حفظ الملفات.
Logon.asp
تتيح هذه الصفحة المستخدمين بكتابة اسم المستخدم وكلمة المرور للوصول إلى الموقع.

نسخ التعليمات البرمجية التالية إلى صفحة ASP جديدة. حفظ الملف ك Logon.asp في المجلد أسبسيكوريب الدليل Inetpub\Wwwroot.
<%'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>
<html><body>
<form action="Validate.asp" method="post">
<P>
Login ID:&#xa0;&#xa0; <INPUT type=text id=UID name=UID> <br>
Password:&#xa0;&#xa0;<input type="password" id="passwd" name="passwd">
</P>
<input type="submit" value="Logon" id="submit1" name="submit1">
</form>
</body></html>

Validate.asp
بعد أن يقدم المستخدم معلومات تسجيل الدخول الخاصة به لتسجيل الدخول إلى التطبيق الخاص بك، بالتحقق من صحة معلومات المستخدم هذه الصفحة وثم إعادة توجيه المستخدم إلى الصفحة المناسبة.

نسخ التعليمات البرمجية التالية إلى صفحة ASP جديدة. تغيير معلمات سلسلة الاتصال حيث أنها تحتوي على قيم صالحة. معلمات سلسلة الاتصال كما يلي:
  • معرف المستخدم
  • كلمة المرور
  • النشرة المصورة الأولية
  • مصدر البيانات
حفظ الملف ك Validate.asp في المجلد أسبسيكوريب الدليل Inetpub\Wwwroot.
<%Response.Buffer=true

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

Dim userid
Dim Pwd
'Assign the user ID to this variable. The user provides the user ID.
userid= Request.Form("UID")
'Check whether userid is an empty string. If it is empty, redirect to Logon.asp.
'If it is not empty, connect to the database, and validate the user.

if userid <> "" then
pwd = Request.Form("passwd")

Dim Cn
Dim Rs
Dim StrConnect

'Specify the connection string to access the database.
'Remember to change the following connection string parameters to reflect the correct values
'for your SQL server.
StrConnect = "Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;" & _
"Network Library=dbmssocn;Data Source=servername"

Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open StrConnect
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "Select * from Users where uid='" & userid & "'",Cn
'Check to see whether this user ID exists in your database.
If Not Rs.EOF then
If strcomp( pwd, Rs.Fields("password").value , 1) = 0 then
'Password is correct. Set a session variable, and redirect the user to a Default.asp page
'or the main page in your application.
Session("UID") = userid
Response.Redirect "Default.asp"
Response.End
Else
'Password is incorrect. Redirect the user to the logon page.
Response.Redirect "Logon.asp"
Response.End
End if
Else
'If the user is not in your database, point him or her to the Register.asp page
'so that he or she can register at your Web site to access your application.
Response.Redirect "Register.asp"
Response.End
End if
Else
Response.Redirect "Logon.asp"
Response.End
End if

%>

Register.asp
تتيح هذه الصفحة المستخدمين تسجيل معرف المستخدم وكلمة المرور الوصول إلى الموقع.

نسخ التعليمات البرمجية التالية إلى صفحة ASP جديدة. تغيير معلمات سلسلة الاتصال حيث أنها تحتوي على قيم صالحة. معلمات سلسلة الاتصال كما يلي:
  • معرف المستخدم
  • كلمة المرور
  • النشرة المصورة الأولية
  • مصدر البيانات
حفظ الملف ك Register.asp في المجلد ASPSecureAPP الدليل Inetpub\Wwwroot.
<%Response.Buffer=true

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

'Check whether user has submitted user name and password so that you can
'add that user to the users database and register him or her as a valid
'user to use this application.
'This is just the minimal code that you need. You can customize this the way you want.
Dim pwd
Dim userid

userid = Request.Form("uname")
pwd = Request.Form("pwd")

If userid <> "" then
If pwd <> "" then
Dim Cn
Dim Rs
Dim StrConnect

'Specify the connection string to access the database.
'Remember to change the following connection string parameters to reflect the correct values
'for your SQL server.
StrConnect = "Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;" & _
"Initial Catalog=pubs;Network Library=dbmssocn;Data Source=servername"

Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open StrConnect
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "Select * from Users where uid='" & userid & "'",Cn,3
If Rs.RecordCount>0 then
Response.Write "The Username that you entered has already been taken by someone else."
Response.Write "Use a different Username."
Set Rs = Nothing
Set Cn = Nothing
Else
Dim records
Cn.Execute "INSERT INTO USERS1 (uid,password) VALUES" & _
"('" & userid & "','" & pwd & "')" , records
If records=1 then
Response.Write "You have been registered successfully."
Set Rs = Nothing
Set Cn = Nothing
Session("UID")= userid
Response.Redirect "Default.asp"
Response.End
Else
Response.Write Err.Description
Set Rs = Nothing
Set Cn = Nothing
Response.End
End if
End if
Else
Response.Write "Password is empty. Could not register. Try again."
End if
End if
%>

<html>
<head>
<script language="javascript">
function callsubmit()
{

if (frm1.pwd.value==frm1.pwdc.value) {
frm1.submit();
}
else
{
alert("Password does not match. Re-enter the password");
}

}
</script>
</head>
<body>
<form action="" method="post" id=frm1 name=frm1>
<P>
Login ID:&#xa0;&#xa0; <INPUT type=text id=uname name=uname> <br>
Password:&#xa0;&#xa0;<input type="password" id="pwd" name="pwd"> <br>
Confirm Password:&#xa0;&#xa0;<input type="password" id="pwdc" name="pwdc">
</P>
<input type="button" value="Register" id="submit1" name="submit1" onclick=javascript:callsubmit();>
</form>
</body>
</html>

Logoff.asp
هذه الصفحة يسمح للمستخدمين بتسجيل الخروج.

نسخ التعليمات البرمجية التالية إلى صفحة ASP جديدة. حفظ الملف باسم Logoff.asp في المجلد أسبسيكوريب الدليل Inetpub\Wwwroot.
<%Response.Buffer=True

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

'Set the session variable to an empty string and also destroy the session to make
'to complete the user session.
Session("UID")=""
Session.Abandon
Response.Redirect "Logon.asp"
Response.End
%>

Default.asp
يمكنك استخدام هذه الصفحة لاختبار الصفحات الأخرى التي قمت بإنشائها.

نسخ التعليمات البرمجية التالية إلى صفحة ASP جديدة. حفظ الملف باسم Default.asp في المجلد أسبسيكوريب الدليل Inetpub\Wwwroot.
<%'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

if session("UID")="" then
Response.Redirect "Logon.asp"
Response.End
else
Response.Write "You are logged on as " & session("UID") & "<br>"
end if
%>
<HTML>
<BODY>
<A HREF="Logoff.asp">Click here to log off</A>
<BODY>
</HTML>

إضافة التحقق من صحة التعليمات البرمجية لصفحات

التعليمات البرمجية التالية يتحقق ما إذا كان المستخدم مسبقاً بتسجيل الدخول على موقع الويب الخاص بك وعدم تسجيل بعد.

نسخ هذه الكتلة من التعليمات البرمجية في كل صفحة ASP محسنة الأمان ما عدا الصفحة Logon.asp والصفحة Validate.asp. عدم إضافة هذه التعليمات البرمجية للصفحة Logon.asp أو إلى الصفحة Validate.asp. تأكد من لصق هذه التعليمة البرمجية في أعلى كل صفحة حيث يظهر هذا الرمز الأول.
<%'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

if session("UID")="" then
Response.Redirect "Logon.asp"
Response.End
end if
%>

كيف يعمل هذا التطبيق

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

في حالة عدم وجود معرف المستخدم وكلمة المرور للمستخدم في قاعدة البيانات الخاصة بك، يتم توجيه المستخدم إلى صفحة Register.asp حيث يمكن تسجيل المستخدم لاستخدام التطبيق الخاص بك. عندما يسجل المستخدم في موقع الويب الخاص بك من خلال صفحة Register.asp، يتم إدخال التفاصيل الخاصة بهذا المستخدم في قاعدة بيانات المستخدم الذي تستخدمه للتحقق من صحة المستخدمين.

استكشاف الأخطاء وإصلاحها

  • استناداً إلى المتطلبات وكيفية تأمين هذا التطبيق، يمكنك تمكين تشفير طبقة مأخذ التوصيل الآمنة (SSL) على Logon.asp لتجنب نقل بيانات اعتماد المستخدم في نص واضح.
  • لا تقم بتعيين حسابات المستخدمين هذه على حسابات Windows. ولذلك، لا مباشرة استخدام حسابات Windows الخاصة بك لتسجيل الدخول إلى هذا التطبيق.
  • تستخدم هذه الآلية الأمنية معلومات يستند إلى "جلسة عمل آسيا والمحيط الهادئ". ولذلك، لا تعمل هذه الآلية للمستخدمين الذين لم يتم تمكين ملفات تعريف الارتباط.

المراجع

لمزيد من المعلومات، انقر فوق أرقام المقالات التالية لعرضها في "قاعدة معارف Microsoft":

كيفية إنشاء دليل ظاهري في خدمات معلومات إنترنت (IIS) 172138

282060 الموارد لتأمين "خدمات معلومات إنترنت"

كيفية استخدام أذونات NTFS لحماية صفحة ويب يقوم بتشغيل IIS 4.0 أو 5.0 299970

خصائص

رقم الموضوع: 299987 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات