เมื่อเร็วๆ นี้ ฉันกำลังศึกษาการควบคุมการเข้าสู่ระบบใหม่ใน asp.net 2.0 และพบว่าข้อกำหนดด้านความปลอดภัยของรหัสผ่านเริ่มต้นของระบบค่อนข้างสูง กล่าวคือ "ความยาวรหัสผ่านขั้นต่ำคือ 7 ซึ่งต้องมีอักขระที่ไม่ใช่ตัวอักษรและตัวเลขต่อไปนี้: 1. " สำหรับ Wang Zhan ธรรมดานั้นไม่จำเป็น (แม้แต่ windows2003sever ก็ไม่จำเป็นต้องใช้รหัสผ่านที่ซับซ้อนเช่นนี้ตามค่าเริ่มต้น) วิธีการแก้ไขที่จัดทำโดยเอกสารอ้างอิงบางอย่างคือการแก้ไขใน machine.config แต่ถ้าคุณไม่มีสิทธิ์ระดับผู้ดูแลระบบในโฮสต์ คุณจะไม่สามารถแก้ไขได้ ดังนั้นจึงขอแนะนำให้แก้ไขในไฟล์ web.config
วิธีการคือการเพิ่มแท็กย่อยให้กับโหนด <system.web> ของ web.config:
<สมาชิก>
<ผู้ให้บริการ>
< เอาชื่อ = "AspNetSqlMembershipProvider"/>
<เพิ่มชื่อ = "AspNetSqlMembershipProvider"
ชนิด = " System.Web.Security.SqlMembershipProvider, System.Web, เวอร์ชัน = 2.0.0.0, วัฒนธรรม =เป็นกลาง, PublicKeyToken = b03f5f7f11d50a3a"
ConnectionStringName = "LocalSqlServer"
เปิดใช้งานการดึงรหัสผ่าน = "false"
เปิดใช้งานรหัสผ่านรีเซ็ต = "จริง"
ต้องการคำถามและคำตอบ = "จริง"
ชื่อใบสมัคร = "/"
ต้องการUniqueEmail = "false"
รูปแบบรหัสผ่าน = "แฮช"
maxInvalidPasswordAttempts = "5"
minRequiredPasswordLength = "6"
minRequiredNonalphanumericCharacters = "0"
รหัสผ่าน AttemptWindow = "10"
รหัสผ่านStrengthRegularExpression="" />
</ผู้ให้บริการ>
</สมาชิกภาพ>
มาอธิบายคุณลักษณะที่สำคัญ:
การเชื่อมต่อฐานข้อมูล ConnectionStringName สิ่งนี้จะต้องตั้งค่าใน web.config
EnablePasswordRetrieval รับค่าที่ระบุว่าผู้ให้บริการสมาชิกปัจจุบันได้รับการกำหนดค่าเพื่อให้ผู้ใช้สามารถดึงรหัสผ่านของตนได้หรือไม่
EnablePasswordReset รับค่าที่ระบุว่าผู้ให้บริการสมาชิกปัจจุบันได้รับการกำหนดค่าเพื่อให้ผู้ใช้สามารถรีเซ็ตรหัสผ่านของตนได้หรือไม่
needQuestionAndAnswer รับค่าที่ระบุว่าผู้ให้บริการสมาชิกดีฟอลต์ต้องการให้ผู้ใช้ตอบคำถามรหัสผ่านสำหรับการรีเซ็ตรหัสผ่านและการเรียกค้นหรือไม่
applicationName รับหรือตั้งชื่อของแอปพลิเคชัน
needUniqueEmail ระบุว่าผู้ใช้ต้องระบุค่าที่อยู่อีเมลที่ไม่ซ้ำกันเมื่อสร้างผู้ใช้หรือไม่
รูปแบบรหัสผ่าน ระบุรูปแบบที่รหัสผ่านถูกเก็บไว้ในที่เก็บข้อมูลสมาชิก คำแนะนำโดยละเอียดด้านล่าง
maxInvalidPasswordAttempts รับจำนวนรหัสผ่านที่ไม่ถูกต้องหรือความพยายามตอบรหัสผ่านไม่ถูกต้องที่อนุญาตก่อนที่ผู้ใช้จะถูกล็อคออกจากการเป็นสมาชิก
minRequiredPasswordLength รับความยาวขั้นต่ำที่จำเป็นสำหรับรหัสผ่าน
minRequiredNonalphanumericCharacters รับจำนวนอักขระพิเศษขั้นต่ำที่ต้องรวมไว้ในรหัสผ่านที่ถูกต้อง
passwordAttemptWindow รับจำนวนสูงสุดของรหัสผ่านที่ไม่ถูกต้องหรือการพยายามตอบรหัสผ่านที่ไม่ถูกต้องที่อนุญาตก่อนที่ผู้ใช้ที่เป็นสมาชิกจะถูกล็อคออกในหน่วยนาที
คุณสมบัติคำอธิบายโดยละเอียดของ PasswordFormat ระบุรูปแบบที่จัดเก็บรหัสผ่าน รหัสผ่านสามารถจัดเก็บในรูปแบบรหัสผ่านที่ชัดเจน เข้ารหัส และแฮช รหัสผ่านที่ชัดเจนจะถูกจัดเก็บไว้ในข้อความที่ชัดเจน ซึ่งช่วยปรับปรุงประสิทธิภาพในการจัดเก็บและเรียกค้นรหัสผ่าน แต่มีความปลอดภัยน้อยกว่าและสามารถอ่านได้ง่ายเมื่อความปลอดภัยของแหล่งข้อมูลถูกบุกรุก รหัสผ่านที่เข้ารหัสจะถูกเข้ารหัสเมื่อจัดเก็บและสามารถถอดรหัสได้เมื่อเปรียบเทียบหรือดึงรหัสผ่าน รหัสผ่านดังกล่าวจำเป็นต้องมีการประมวลผลเพิ่มเติมระหว่างการจัดเก็บและการเรียกค้น แต่มีความปลอดภัยมากกว่าและไม่สามารถเรียกคืนได้ง่ายเมื่อความปลอดภัยของแหล่งข้อมูลถูกบุกรุก รหัสผ่านที่แฮชจะถูกแฮชโดยใช้อัลกอริธึมการแฮชทางเดียวและค่าเกลือที่สร้างขึ้นแบบสุ่มเมื่อจัดเก็บไว้ในฐานข้อมูล เมื่อรหัสผ่านได้รับการตรวจสอบแล้ว รหัสผ่านจะถูกแฮชด้วยค่าเกลือในฐานข้อมูลสำหรับการตรวจสอบ ไม่สามารถดึงรหัสผ่านที่แฮชได้