สิ่งที่ต้องคำนึงถึงเมื่อพัฒนาเว็บเพจด้วย ASP เพื่อนที่ใช้ ASP สามารถดู ขั้นตอนต่างๆ ได้
1. อย่าเชื่อว่าอินพุตของผู้ใช้มีขนาดที่เหมาะสมหรือมีอักขระที่เหมาะสม ข้อมูลของผู้ใช้ควรได้รับการตรวจสอบก่อนนำไปใช้ในการตัดสินใจเสมอ ตัวเลือกที่ดีที่สุดของคุณคือการสร้างส่วนประกอบ COM+ ที่คุณสามารถเรียกจากเพจ ASP เพื่อตรวจสอบความถูกต้องของการป้อนข้อมูลของผู้ใช้ คุณยังสามารถใช้เมธอด Server.HTMLEncode, เมธอด Server.URLEncode หรือหนึ่งในตัวอย่างโค้ดที่ด้านล่างของเพจนี้
2. อย่าสร้างสตริงการเชื่อมต่อฐานข้อมูลในหน้า ASP โดยการเชื่อมสตริงที่ป้อนโดยผู้ใช้ ผู้ใช้ที่เป็นอันตรายสามารถเข้าถึงฐานข้อมูลได้โดยการใส่โค้ดลงในอินพุต หากคุณใช้ฐานข้อมูล SQL ให้ใช้กระบวนงานที่เก็บไว้เพื่อสร้างสตริงการเชื่อมต่อฐานข้อมูล
3. อย่าใช้ชื่อบัญชีผู้ดูแลระบบ SQL เริ่มต้น sa ทุกคนที่ใช้ SQL จะรู้ว่ามีบัญชี sa อยู่ สร้างบัญชีการจัดการ SQL อื่นด้วยรหัสผ่านที่ปลอดภัย และลบบัญชี sa
4. ก่อนที่คุณจะจัดเก็บรหัสผ่านผู้ใช้ไคลเอ็นต์ โปรดใช้อัลกอริทึมแฮช เข้ารหัส base64 หรือใช้ Server.HTMLEncode หรือ Server.URLEncode เพื่อเข้ารหัสรหัสผ่านเหล่านี้ คุณยังสามารถใช้ตัวอย่างโค้ดรายการใดรายการหนึ่งที่ด้านล่างของหน้านี้เพื่อตรวจสอบอักขระในรหัสลับไคลเอ็นต์
5. อย่าใส่ชื่อบัญชีผู้ดูแลระบบหรือรหัสผ่านในสคริปต์การดูแลระบบหรือเพจ ASP
6. อย่าตัดสินใจในโค้ดของคุณโดยยึดตามส่วนหัวของคำขอ เนื่องจากข้อมูลส่วนหัวสามารถปลอมแปลงได้โดยผู้ใช้ที่เป็นอันตราย เข้ารหัสข้อมูลคำขอก่อนใช้งานทุกครั้ง หรือตรวจสอบอักขระที่มีอยู่โดยใช้ตัวอย่างโค้ดด้านล่าง
7. อย่าจัดเก็บข้อมูลความปลอดภัยไว้ในคุกกี้หรือซ่อนช่องป้อนข้อมูลในหน้าเว็บ
ใช้ Secure Sockets Layer (SSL) กับแอปพลิเคชันตามเซสชันเสมอ เพื่อหลีกเลี่ยงความเสี่ยงในการส่งคุกกี้เซสชันโดยไม่ต้องเข้ารหัส หากคุกกี้เซสชันไม่ได้รับการเข้ารหัส ผู้ใช้ที่เป็นอันตรายจะสามารถใช้คุกกี้เซสชันในแอปพลิเคชันหนึ่งเพื่อเข้าถึงแอปพลิเคชันอื่นในกระบวนการเดียวกันได้
8. เมื่อเขียนแอปพลิเคชัน ISAPI ตัวกรอง หรืออ็อบเจ็กต์ COM+ โปรดระวังบัฟเฟอร์ล้นเนื่องจากขนาดของตัวแปรและข้อมูล นอกจากนี้ โปรดระวังปัญหาด้านรูปแบบบัญญัติที่อาจเป็นผลมาจากการตีความ เช่น การตีความชื่อพาธแบบสัมบูรณ์เป็นชื่อพาธแบบสัมพัทธ์หรือ URL
9. เมื่อแอปพลิเคชัน ASP ที่ทำงานอยู่ในอพาร์ทเมนต์แบบเธรดเดียว (STA) ถูกสลับเป็นอพาร์ทเมนต์แบบมัลติเธรด (MTA) โทเค็นการเลียนแบบจะล้าสมัย นี่อาจทำให้แอปพลิเคชันทำงานโดยไม่มีการแอบอ้างบุคคลอื่น ทำให้สามารถรันได้อย่างมีประสิทธิภาพด้วยข้อมูลประจำตัวของกระบวนการที่อาจอนุญาตให้เข้าถึงทรัพยากรอื่น ๆ หากคุณต้องสลับโมเดลเธรด ให้ปิดใช้งานและถอนการติดตั้งแอปพลิเคชันก่อนทำการเปลี่ยนแปลง
ตัวอย่างรหัส
ตัวอย่างโค้ดนี้มีฟังก์ชันที่จะลบอักขระที่อาจเป็นอันตรายออกจากสตริงที่ส่งไปยังฟังก์ชัน ในทั้งสองตัวอย่างข้างต้น ให้ระบุโค้ดเพจเพื่อให้แน่ใจว่ามีการเข้ารหัสที่ถูกต้อง ตัวอย่างต่อไปนี้ใช้ Microsoft Visual Basic® Scripting Edition (VBScript):
<%@ LANGUAGE=VBScript %> - Response.CodePage = 1252 Response.Write (สวัสดี & RemoveBadCharacters (คำขอแบบฟอร์ม (ชื่อผู้ใช้))) Response.Write(<BR>นี่คือสาเหตุที่คุณได้รับข้อผิดพลาด :) ฟังก์ชั่น RemoveBadCharacters(strTemp) Dim regEx ตั้งค่า regEx = RegExp ใหม่ regEx.Pattern = [^/s/w] regEx.Global = จริง RemoveBadCharacters = regEx.Replace(strTemp, ) ฟังก์ชันสิ้นสุด - |
ตัวอย่างต่อไปนี้ใช้ Microsoft JScript®:
<%@ LANGUAGE=JScript %> - Response.CodePage = 1252; Response.Write (สวัสดี + RemoveBadCharacters (คำขอแบบฟอร์ม (ชื่อผู้ใช้))); Response.Write(<BR>นี่คือสาเหตุที่คุณได้รับข้อผิดพลาด:); ฟังก์ชั่น RemoveBadCharacters (strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); กลับ strTemp; - - |