AASP เป็นแอพพลิเคชั่นที่พัฒนาโดย Microsoft เพื่อแทนที่ CGI Scripting Programs มันสามารถโต้ตอบกับฐานข้อมูลและโปรแกรมอื่น ๆ ที่นี่บรรณาธิการจะให้การสนทนาง่ายๆแก่เขา เนื้อหาต่อไปนี้ส่วนใหญ่พูดถึงหลักการสำคัญของรหัสการเขียน ASP
1. ประกาศตัวแปร VBScript
ใน ASP VBScript ได้รับการสนับสนุนที่แข็งแกร่งและสามารถรวมฟังก์ชั่นและวิธีการ VBScript ได้อย่างราบรื่นซึ่งให้ความสะดวกสบายที่ดีสำหรับการขยายฟังก์ชั่นที่มีอยู่ของ ASP เนื่องจากแนวคิดของประเภทตัวแปรได้รับการเบลอใน ASP โปรแกรมเมอร์จำนวนมากจึงคุ้นเคยกับการไม่ประกาศตัวแปร VBScript ระหว่างการโต้ตอบระหว่าง ASP และ VBScript ซึ่งจะเพิ่มภาระการแยกวิเคราะห์ของเซิร์ฟเวอร์และส่งผลกระทบต่อความเร็วการร้องขอการตอบสนองของเซิร์ฟเวอร์
ในมุมมองของสิ่งนี้เราสามารถบังคับให้ผู้ใช้ทำการประกาศตัวแปรใน VBScript เช่นเดียวกับที่เราบังคับให้ผู้ใช้ดำเนินการประกาศตัวแปรใน VB วิธีการใช้งานคือการวาง <% ตัวเลือกที่ชัดเจน%> ที่จุดเริ่มต้นของบรรทัดโปรแกรม ASP
2. เข้ารหัสที่อยู่ URL
เมื่อเราใช้ ASP เพื่อสร้างที่อยู่ URL แบบไดนามิกด้วยพารามิเตอร์และกระโดดมันเป็นเรื่องปกติที่จะแยกวิเคราะห์ใน IE แต่เมื่อเรียกดู NetScrape จะมีข้อผิดพลาดดังนี้:
ข้อผิดพลาด HTTP 400 400 คำขอที่ไม่ดีเนื่องจากไวยากรณ์ที่ไม่ถูกต้องไม่สามารถเข้าใจคำขอได้โดยเซิร์ฟเวอร์ ลูกค้าไม่ควรทำซ้ำคำขอโดยไม่ต้องแก้ไข
วิธีแก้ปัญหาคือการใช้วิธี urlencode ของวัตถุเซิร์ฟเวอร์ ASP ในตัวเพื่อเข้ารหัส URL การเข้ารหัสพารามิเตอร์ URL ที่สร้างขึ้น ตัวอย่างมีดังนี้:
<% url = "xur.asp" var1 = "username =" & server.urlencode ("xur") var2 = "& company =" & server.urlencode ("xurstudio") var3 = "& โทรศัพท์ =" & เซิร์ฟเวอร์ & var1 & var2 & var3 %>3. ล้างวัตถุ
หลังจากใช้วัตถุก่อนอื่นให้ใช้วิธีปิดเพื่อเพิ่มทรัพยากรระบบที่ครอบครองโดยวัตถุ จากนั้นตั้งค่าวัตถุเป็น "ไม่มีอะไร" เพื่อเพิ่มหน่วยความจำของวัตถุ ก่อนหน้านี้ฉันขัดข้อง IIS ของฉันโดยการสร้างชุดบันทึกมากกว่า 100 ชุดบนหน้าเว็บที่ไม่มีวัตถุที่ชัดเจน รหัสต่อไปนี้ใช้เนื้อหาฐานข้อมูลเพื่อสร้างรายการดรอปดาวน์ ตัวอย่างรหัสมีดังนี้:
<% mydsn = "dsn = xur; uid = xur; pwd = xur" mysql = "เลือก * จากผู้เขียนที่ au_id <100" ตั้งค่า conntemp = server.createObject ("adodb.connection") Response.write mysql conntemp.close set conntemp = ไม่มีอะไรตอบกลับ end end ถ้า %> < %do จนกว่า rstemp.eof %> < %rstemp.movenext loop rstemp.close set rstemp = ไม่มีอะไร conntemp.close set conntemp = ไม่มีอะไร %>4. สร้างแบบสอบถาม SQL โดยใช้สตริง
การใช้สตริงเพื่อสร้างแบบสอบถามไม่ได้เพิ่มความเร็วความเร็วในการแยกวิเคราะห์ของเซิร์ฟเวอร์ ในทางตรงกันข้ามมันจะเพิ่มเวลาการแยกเซิร์ฟเวอร์ แต่ก็ยังแนะนำให้ใช้สตริงแทนคำสั่งแบบสอบถามอย่างง่ายเพื่อสอบถาม ข้อดีของสิ่งนี้คือมันสามารถค้นพบปัญหาของโปรแกรมได้อย่างรวดเร็วดังนั้นจึงช่วยอำนวยความสะดวกและสร้างโปรแกรมได้อย่างมีประสิทธิภาพ ตัวอย่างมีดังนี้:
< %mysql = "" เลือก * "mysql = mysql &" จากสำนักพิมพ์ "mysql = mysql &" โดยที่ state = 'ny' "response.write mysql set rstemp = conntemp.execute
5. ใช้เคสเพื่อเลือกเงื่อนไข
เมื่อทำการเลือกตามเงื่อนไขให้ลองใช้คำสั่งเคสและหลีกเลี่ยงการใช้คำสั่งหาก การใช้คำสั่ง CASE สามารถทำให้โปรแกรมสามารถไหลได้และดำเนินการได้เร็วกว่าคำสั่ง IF ตัวอย่างมีดังนี้:
<%สำหรับ i = 1 ถึง 1,000 n = i response.write addSuffix (n) & "<br>" next%next function <%function addsuffix (num) numpart = ขวา (num, 1) เลือกกรณี numpart กรณี "1" ถ้า instr (num, "11") จากนั้น num = num num & num n num & num สิ้นสุดถ้ากรณี "3" ถ้า instr (num, "13") จากนั้น num = num & "th" els num = num & "rd" สิ้นสุดถ้ากรณี "4" num = num & "th" case num = num & "th" end select addSuffix = num end function %>
6. ใช้ค่าคงที่ที่กำหนดไว้ในไฟล์ ADOVBS.INC เพื่อเปิดชุดระเบียน
เมื่อเปิดชุดระเบียนคุณสามารถกำหนดประเภทเคอร์เซอร์และประเภทล็อคที่ชุดบันทึกจะเปิดขึ้น
มีค่าคงที่บางอย่างที่กำหนดไว้ในไฟล์ ADOVBS.INC เพื่อกำหนดประเภทเหล่านี้ ไฟล์ ADOVBS.INC ถูกบันทึกไว้ในไดเรกทอรี/IIsamples/iisamples/iisamples ด้านล่างนี้เป็นเคอร์เซอร์ที่ใช้กันทั่วไปและประเภทล็อค
ประเภทเคอร์เซอร์:
ประเภทล็อค:
<!-#รวม virtual = "/adovbs.inc"-> <% connectMe = "dsn = xur; uid = xur; pwd = xur" sqltemp = "เลือก * จากสำนักพิมพ์ที่ name = 'xur'" set rempp = เซิร์ฟเวอร์ Adlockoptimstic response.write rstemp.recordcount & "บันทึกใน <br>" & sqltemp rstemp.close set rstemp = ไม่มีอะไร %>
7. หลีกเลี่ยงคำจำกัดความของวัตถุในไฟล์ global.asa
เนื่องจากเนื้อหาในไฟล์ global.asa สามารถอ้างอิงได้โดยไฟล์ทั้งหมดในเว็บไซต์ไม่ต้องสงสัยเลยว่าการกำหนดวัตถุในไฟล์ Global.asa สามารถบันทึกการทำซ้ำได้มาก
ตัวอย่างเช่นในฟังก์ชั่น Application_onstart ใน global.asa คำจำกัดความต่อไปนี้จะทำ:
< %แอปพลิเคชัน Sub Application_onstart Set ("TheConn") = Server.createObject ("AdoDB.Connection") สิ้นสุด sub %>;สิ่งนี้ช่วยให้คุณสามารถอ้างอิงที่คล้ายกันในรหัสใด ๆ ในเว็บไซต์:
< % mysql = "select * จากผู้เผยแพร่โดยที่ state = 'xur' set rstemp = แอปพลิเคชัน (" theconn "). ดำเนินการ (mysql) %> %>ในทำนองเดียวกันวัตถุชุดระเบียนสามารถสร้างได้ในฟังก์ชัน session_onstart
< %เซสชันเซสชัน sub semsitu
จากนั้นคำพูดต่อไปนี้จะทำในเว็บไซต์:
< % mysql = "select * จากผู้เผยแพร่โดยที่ SESSION SESS SESS STATE = 'Xur' (" rstemp ") = conntemp.execute (MySQL) %> %>อย่างไรก็ตามการทำเช่นนี้ก็มีผลกระทบเชิงลบอย่างมาก เนื่องจากทั้งแอปพลิเคชันและตัวแปรเซสชันจะปล่อยทรัพยากรที่ถูกครอบครองเมื่อปิดเว็บไซต์พารามิเตอร์เซสชันจะทำให้หน่วยความจำที่ไม่จำเป็นจำนวนมากเสียจำนวนมากและในเวลานี้ตัวแปรแอปพลิเคชันจะกลายเป็นคอขวดในประสิทธิภาพของเซิร์ฟเวอร์
สารละลาย:
สร้างหน้า ASP เพื่อกำหนดวัตถุและแนะนำหน้า ASP นี้ในหน้าเว็บที่จำเป็นต้องเรียกวัตถุเหล่านี้ สมมติว่าชื่อหน้า ASP ของวัตถุที่กำหนดถูกกำหนดไว้แล้วหน้าสามารถแนะนำได้โดยการเพิ่มคำสั่งต่อไปนี้ในหน้า ASP ที่เกี่ยวข้อง
<!-#รวม virtual = "/define.asp"->
เมื่อแนะนำหน้าเว็บจะเป็นการดีที่สุดที่จะไม่รวม <%@language = "vbscript"%>%> ในไฟล์ ASP ที่จะแนะนำ เนื่องจากในไฟล์ ASP สามารถมีเพียงหนึ่งเดียวที่แยกการวิเคราะห์ภาษาสคริปต์ที่กำหนดโดย @
8. การป้องกันความปลอดภัย
ASP จัดเตรียมกลไกการป้องกันรหัสที่ดีและรหัส ASP ทั้งหมดจะดำเนินการทางฝั่งเซิร์ฟเวอร์และส่งคืนผลลัพธ์ของการดำเนินการรหัสไคลเอนต์เท่านั้น ถึงกระนั้นในเวอร์ชันเก่าของ IIS คุณสามารถดูซอร์สโค้ดของ ASP หลังจากชื่อไฟล์ :: $ data ซึ่งอยู่ในขอบเขตของความปลอดภัยของเว็บเซิร์ฟเวอร์และไม่ได้อยู่ในขอบเขตของบทความนี้ ต่อไปนี้เป็นข้อควรระวังด้านความปลอดภัยง่ายๆสองประการ
แม้ว่าจะแนะนำให้แนะนำไฟล์ด้วย Inc ASP เป็นส่วนขยาย แต่ก็ยังแนะนำให้ใช้ ASP เป็นส่วนขยายเพื่อแนะนำไฟล์ที่นี่ เมื่อรหัสเหล่านี้ทำงานบนเว็บเซิร์ฟเวอร์ที่มีกลไกการรักษาความปลอดภัยที่ไม่ดีคุณสามารถเรียกดูเนื้อหาของไฟล์ที่นำเข้าได้โดยเพียงแค่ป้อนแถบที่อยู่ (Inc เป็นส่วนขยาย) นี่เป็นเพราะบนเว็บเซิร์ฟเวอร์หากไม่ได้กำหนดไลบรารีการเชื่อมต่อแบบไดนามิกที่แก้ไขประเภทหนึ่ง (เช่น INC) ไฟล์จะแสดงในซอร์สโค้ด
อย่าใส่ไฟล์ฐานข้อมูลภายในโครงสร้างเว็บไซต์ดังนั้นเมื่อบุคคลที่เป็นอันตรายได้รับพา ธ ฐานข้อมูลเขาสามารถรับฐานข้อมูลได้อย่างง่ายดายแล้วเปลี่ยนเนื้อหาฐานข้อมูลโดยพลการ วิธีที่ดีกว่าคือการสร้าง DSN (ชื่อแหล่งที่มาวันที่) สำหรับฐานข้อมูลและเข้าถึง DSN โดยตรงเมื่อเข้าถึงฐานข้อมูล
ผ่านบทความนี้คุณมีความเข้าใจในการเข้ารหัส ASP หรือไม่? หวังว่ามันจะช่วยคุณได้