ฉันเชื่อว่าทุกคนคุ้นเคยกับรหัสการตรวจสอบ ไม่ว่าคุณจะสมัครบัญชีหรือเข้าสู่ระบบในบางกรณีคุณจะต้องป้อนรหัสการตรวจสอบ หลังจากสถิติความน่าจะเป็นของการผ่านรหัสการตรวจสอบในการตรวจสอบครั้งเดียวคือ 90%ซึ่งไม่สูง ผู้คนจำนวนมากจะสงสัยอย่างแน่นอนถึงความจำเป็นของการออกแบบนี้ที่ลดประสบการณ์ผู้ใช้ แต่ Hegel กล่าวว่า: ทุกอย่างที่สมเหตุสมผลนั้นสมจริง ทุกสิ่งที่เป็นจริงมีเหตุผล ถัดไปให้เรียนรู้เกี่ยวกับรหัสการยืนยัน
รหัสการตรวจสอบเป็นโปรแกรมอัตโนมัติสาธารณะที่แยกแยะว่าผู้ใช้เป็นคอมพิวเตอร์หรือบุคคล มันถูกใช้เพื่อป้องกันการแคร็กรหัสผ่านที่เป็นอันตรายการปัดตั๋วและน้ำท่วมฟอรัมและป้องกันไม่ให้แฮ็กเกอร์เข้าสู่ระบบอย่างต่อเนื่องผ่านการแตกกำลังเดรัจฉาน มันถูกใช้ในธนาคารชุมชนฟอรัมระบบการลงคะแนน ฯลฯ
หากไม่มีความกังวลใจเพิ่มเติมลองมาดูสี่วิธีที่ฉันรู้ว่าจะใช้รหัสการตรวจสอบใน Java
วิธีที่ 1:
วิธีแรกคือสิ่งแรกที่ฉันคิดและมันเป็นตรรกะการใช้งานที่ง่ายที่สุด แต่มันก็มีประสิทธิภาพและปลอดภัยมาก
การดำเนินการที่เฉพาะเจาะจงคือ: 1 ใช้ Photoshop เพื่อสร้างภาพรหัสการตรวจสอบ ภาพสี่เหลี่ยมอาจมีตัวอักษรภาษาอังกฤษตัวเลขหรือภาษาจีนที่จำเป็น (ดังกล่าวข้างต้น)
2. แสดงภาพในหน้าควบคุมการแกว่งหรือหน้า JSP
3. จับคู่สตริงรหัสการตรวจสอบที่สอดคล้องกันสำหรับแต่ละภาพในรหัส
4. เมื่อส่งให้รับสตริงในส่วนประกอบหรือกล่องข้อความและสตริงของแต่ละภาพเพื่อเปรียบเทียบกับวิธี Equals ()
ข้อเสียคือกระบวนการในการสร้างภาพรหัสการตรวจสอบใช้เวลานานเกินไปและวิธีการใช้งานต่ำมากและขอแนะนำให้นำไปใช้ด้วยวิธีนี้ วิธีการต่อไปนี้จะมีประสิทธิภาพมากขึ้นสวยงามและปลอดภัยมากขึ้น
วิธีที่ 2:
ที่นี่เราพูดคุยเกี่ยวกับ Java Web และการใช้รหัสการตรวจสอบภายใต้ Servlet และตรรกะยังคงชัดเจนมาก
เพื่อกำจัดรหัสการใช้งานที่ง่ายขึ้นให้เริ่มต้นด้วยรหัสคีย์ front-end:
เมื่อเราคลิก "มองไม่เห็นอย่างชัดเจน" ภาพรหัสการตรวจสอบจะได้รับการรีเฟรชและฟังก์ชั่น JS จะถูกเรียกให้รีเซ็ตเส้นทางรูปภาพเพื่อแทนที่ภาพ โปรดดูรหัสด้านล่าง ในรหัส <%= request.getContextPath ()%> คือการแก้ปัญหาของเส้นทางสัมพัทธ์และสามารถส่งคืนเส้นทางรูทของไซต์ได้ /Servlet/Imageservlet เป็นภาพรวมชี้ไปที่ Servlet ของ Imageservlet ทำไมเราต้องเพิ่ม A /Servlet มาก่อน? เนื่องจากเราได้ทำการแมปการกำหนดค่าใน web.xml จึงสามารถเข้าใจได้ว่าเป็นการเปลี่ยนชื่อที่ยาวขึ้น จากนั้นดูฟังก์ชั่น JS ต่อไปนี้ บางคนอาจมีคำถามทำไมต้องมีเวลาปัจจุบันและเพิ่มไปยังจุดสิ้นสุดของเส้นทาง? อันที่จริงนี่คือการแก้ปัญหาของเบราว์เซอร์แคช มันเป็นปัญหาที่ภาพการตรวจสอบรหัสมีการเปลี่ยนแปลงหลังจากที่ Imageservlet ถูกเรียกใช้ แต่แคชไม่เปลี่ยนแปลง ด้วยความช่วยเหลือของเวลาที่แตกต่างกันทุกช่วงเวลาแคชเบราว์เซอร์สามารถทำให้ไม่ถูกต้อง
<script type = "text/javascript"> function reloadCode () {var time = new Date (). getTime (); document.getElementById ("imageCode"). src = "< %= request.getContextPath () %>/servlet/imageservlet? d ="+เวลา; } </script>นี่คือข้อมูลการกำหนดค่าคีย์ใน web.xml:
<script type = "text/javascript"> function reloadCode () {var time = new Date (). getTime (); document.getElementById ("imageCode"). src = "< %= request.getContextPath () %>/servlet/imageservlet? d ="+เวลา; } </script>ถ้าอย่างนั้นมาดูกันว่า Imageservlet สำคัญสร้างภาพอย่างไร:
<servlet> <servlet-name> imageservlet </servlet-name> <servlet-class> com.muke.imageservlet </servlet-class> </servlet> <servlet> <servlet-name> loginservlet </servlet-name> <servlet-name> imageservlet </servlet-name> <url-pattern>/servlet/imageservlet </url-pattern> </servlet-mapping> <servlet-mapping>
หากคุณต้องการอธิบายอย่างชัดเจนมากขึ้นว่ารหัสการตรวจสอบนี้ถูกนำไปใช้อย่างไรจากนั้นเพียงคำเดียว "วาด" ฟังดูคล้ายกับวิธีแรกและมันก็ยังค่อนข้างต่ำ แต่ประสิทธิภาพของการใช้รหัสเพื่อ "วาด" รหัสการตรวจสอบโดยอัตโนมัติเพิ่มขึ้นนับไม่ถ้วน ลองดูที่รหัสด้านบน ก่อนอื่นวัตถุบัฟเดอร์เมจ BI จะถูกสร้างอินสแตนซ์ BI ใช้เพื่อวาดภาพรหัสการยืนยัน จากนั้นใช้ BI เพื่อรับแปรง G และใช้ G เพื่อวาดพื้นหลังรูปสี่เหลี่ยมผืนผ้าของเอนทิตี จากนั้นใช้ตรรกะอย่างง่ายเพื่อเรียกใช้วิธี DrawString () ที่ใช้กันทั่วไปใน Java เพื่อวาดอักขระการตรวจสอบรหัสบนสี่เหลี่ยม ในเวลาเดียวกันสตริงจะถูกเพิ่มลงในวัตถุสตริงสตริงสตริงตามลำดับและในที่สุดก็เก็บไว้ในเซสชันวัตถุในตัว JSP สำหรับการเปรียบเทียบหลังจากส่งรหัสการตรวจสอบ ในการแสดงรหัสการตรวจสอบเรายังต้องเขียนรหัสการตรวจสอบที่สร้างขึ้นรูปภาพรูปภาพไปยังสตรีม Imageio ในรูปแบบภาพที่แน่นอน
ดังที่เห็นได้จาก LoginServlet ด้านล่างคุณสามารถเปรียบเทียบสตริงในกล่องการส่งรหัสการตรวจสอบโดยได้รับสตริงที่เพิ่งเก็บไว้ใน Imageservlet คุณสามารถเปลี่ยนสตริงเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่เพื่อละเว้นตัวพิมพ์ใหญ่
Imageservlet ระดับสาธารณะขยาย httpservlet {public void doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) โยน ioexception {bufferedImage bi = new BufferedImage (,, bufferedImage.type_int_rgb); กราฟิก g = bi.getGraphics (); สี c = สีใหม่ (,,); G.SetColor (C); G.FillRect (,,); ถ่าน [] ch = "abcdefghijklmnopqrstuvwxyz" .tochararray (); สุ่ม r = ใหม่สุ่ม (); int len = ch.length, ดัชนี; StringBuffer sb = new StringBuffer (); สำหรับ (int i =; i <; i ++) {index = r.nextint (len); G.SetColor (สีใหม่ (R.NEXTINT (), R.NEXTINT (), R.NEXTINT (), R.NEXTINT ())); G.DrawString (ch [index]+"", (i*)+,); sb.append (ch [index]); } request.getSession (). setAttribute ("piccode", sb.toString ()); imageio.write (bi, "jpg", response.getOutputStream ()); -นี่คือตำนานการใช้งาน:
ข้างต้นเป็นความรู้ที่เกี่ยวข้องเกี่ยวกับการผลิตรหัสการตรวจสอบ Java ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ! ฉันจะแนะนำการผลิตรหัสการตรวจสอบ Java (ตอนที่ 2) เพื่อนที่สนใจโปรดให้ความสนใจกับเว็บไซต์ Wulin.com!