ยินดีต้อนรับกลับ.
เราเพิ่งได้เรียนรู้เกี่ยวกับ Password API และวิธีที่ API นี้ช่วยให้เราไม่เชื่อถือใครเลย
นั่นคือเราเชื่อมั่นในตัวเองเท่านั้นและเราจะให้ข้อมูลที่เรารู้สึกสบายใจกับ
API เท่านั้นเพื่อให้ตอบสนองต่อข้อมูลบางอย่างที่เราสามารถคำนวณได้บนเครื่องของเราเองซึ่งมีความปลอดภัยมากขึ้นตามสมมุติฐาน
.
สิ่งที่เราทำที่นี่คือแทนที่จะให้แฮชทั้งหมดของรหัสผ่าน เราแค่ให้รหัสผ่านเพียงเล็กน้อย
อักขระห้าตัวแรกตอนนี้มีเกือบ 600 ล้านรหัสผ่านในฐานข้อมูลและเว็บไซต์
ตอนนี้อาจเพิ่งรู้ว่าเราเป็นส่วนหนึ่งของหลายร้อยคนที่มีแฮชเริ่มต้นที่คล้ายกัน แต่พวกเขาจะไม่มีวันรู้รหัสผ่านของเรา
แต่ด้วยข้อมูลตอบกลับนี้ เราจึงสามารถตรวจสอบแฮชแบบเต็มของเราเพื่อดูว่ารหัสผ่านถูกเลื่อนออกไปหรือเคยถูกแฮ็กหรือไม่
เรามาเริ่มเขียนโปรแกรมกันดีกว่า เพราะตามหลักแล้ว ในคำตอบนี้ ตอนนี้ฉันอาจมีรายการแฮชหลายร้อยรายการที่ฉันสามารถตรวจสอบได้
ลองคิดดูว่าเราต้องการทำอะไร
สมมุติว่าเรามีฟังก์ชัน และฟังก์ชันนี้จะเป็นคำขอ
เอพีไอ
ข้อมูลซึ่งเป็นสิ่งที่เราทำที่นี่
ดังนั้นเราจะย้ายลงที่นี่เมื่อเราพร้อม และที่นี่ เราจะให้อักขระแบบสอบถาม
นั่นคือเราจะให้รหัสผ่านเวอร์ชันแฮชของเรา
นี่จะเป็นฟังก์ชันที่ตอนนี้เราจะผ่านมันไป
แต่สิ่งนี้จะขอข้อมูลของเราและให้คำตอบแก่เรา
ต่อจากคำตอบนี้ เราต้องการตรวจสอบจริง ๆ เพื่อที่เราสามารถพูดได้ว่าเราต้องการตรวจสอบ pwned API check
และในที่นี้เราจะให้รหัสผ่านของเรา
นั่นคือรหัสผ่านจริงของเราในกรณีของเราจะเป็นรหัสผ่าน
หนึ่งสองสาม.
และในนี้เราต้องการทำเช็ค
เราอยากจะบอกว่าเช็ค
รหัสผ่าน.
หากมีอยู่ใน API
การตอบสนอง.
จากบนนี้.
สำหรับตอนนี้เราจะผ่านมันไป
มาเริ่มกันเลยดีกว่า
นั่นคือคำขอข้อมูล API
เราได้ทำไปแล้วบางส่วนที่นี่
ถูกต้อง.
ฉันจะย้ายรหัสนี้จริงๆ
ขึ้นที่นี่
ตรวจสอบให้แน่ใจว่าเรามีช่องว่างภายในที่นี่แทนความแข็งแกร่งนี้
ฉันจะให้อักขระแบบสอบถามที่เราจะเรียกความกว้างของฟังก์ชันเพื่อให้เป็นไดนามิก
และอีกครั้ง เราจะขอ URL เราจะได้คำตอบ
และในนี้เราจะทำการตรวจสอบ
เราจะบอกว่าถ้าสถานะจุดตอบสนองเพราะ จำไว้ เราสามารถตรวจสอบการตอบสนองของเราว่าสถานะเป็น 200 หรือในกรณีนี้
สมมุติว่าสถานะไม่เท่ากับ 200
ในกรณีนั้น เรามาทำให้เกิดข้อผิดพลาดกัน
ฉันจะบอกว่าการเพิ่มขึ้นเราจะทำข้อผิดพลาดรันไทม์และเราจะบอกว่าใช้สตริง F แล้วเราจะบอกว่า
อากาศ.
กำลังดึงข้อมูล
จากนั้นเราจะให้รหัสสถานะเพื่อให้เป็นสถานะการตอบสนอง
โอ้ และจริงๆ แล้วนี่คือรหัสสถานะ
ลองทำรหัสสถานะที่นี่ แล้วเราจะบอกว่าตรวจสอบ
API แล้วลองอีกครั้ง
เอาล่ะ นี่ควรเป็นข้อผิดพลาดของเราหากเราทำผิดพลาด
มาลองทดสอบกันดู
ฉันกำลังจะไป
มาทำ API ที่ไม่มีอยู่กันเถอะ
ดังนั้นฉันจึงพูดพล่อย ๆ บางอย่างที่นี่
ถ้าฉันบันทึกและเรียกใช้สิ่งนี้
ฉันต้องรันโค้ดชิ้นนี้จริงๆ
เรามาขอข้อมูล API กันเถอะ และอักขระการสืบค้นจะเป็น
หนึ่งสองสาม.
และคุณรู้อะไรไหม
เรื่องนี้กำลังจะออกอากาศไม่ว่าจะทำหรือไม่ก็ตาม
ให้ทำแบบนี้เพราะมันไม่ใช่เวอร์ชัน Hatch
และฉันได้รับข้อผิดพลาดประเภท python ที่นี่ สามารถเชื่อมสตริงได้เท่านั้น ไม่ใช่ int
ดังนั้นเราจึงสามารถแปลงค่านี้เป็นสตริงได้ เนื่องจากจำไว้ว่าเรากำลังเพิ่มลงใน URL ที่นี่
อีกครั้งถ้าเราเรียกใช้สิ่งนี้
ก็ได้ ดูนั่นสิ
เราพบข้อผิดพลาดรันไทม์
เรามีข้อผิดพลาดรันไทม์
เกิดข้อผิดพลาดในการดึงข้อมูล 400
ตรวจสอบ API แล้วลองอีกครั้ง
เอาล่ะ ส่วนนี้ใช้งานได้ แต่ในกรณีนี้ ถ้าเราไม่มีข้อผิดพลาดนั้น
สมมติว่าเราจะส่งคืนการตอบกลับ
เราแค่เขียนฟังก์ชันเล็กๆ ง่ายๆ เท่านั้น
ในกรณีนี้ เราแค่ต้องการขอข้อมูล API ของเรา ตอนนี้เราจึงสามารถใช้มันได้ตลอดทั้งโค้ดของเรา
สุดยอด.
ส่วนต่อไปนี้ค่อนข้างยุ่งยากเพราะเราต้องเรียกใช้รหัสผ่านของเราผ่านอัลกอริธึม SHA one
โชคดีที่ Python มีโมดูลในตัวให้เราทำสิ่งนี้ ดังนั้นเราจึงสามารถนำเข้า hash lib ได้
อย่างที่คุณเห็น มันเป็นโมดูลในตัว ดังนั้นคุณสามารถอ่านเพิ่มเติมได้หากต้องการ
ในกรณีของเรา เราสามารถทำการแฮช SHA1 ได้เหมือนกับที่เราทำบนเว็บไซต์นั้นด้วยไลบรารีนี้
ในนี้.
สิ่งที่เราจะทำคือ อย่างแรกเลย ฉันต้องการแฮชรหัสผ่านของฉัน
ลองลบอดีตที่นี่และพูดรหัสผ่าน sha one และเราสามารถใช้ hash lib เช่น hash lib dot SHA one ซึ่งเป็นอัลกอริทึมแฮชที่เราต้องการใช้
และนี่จะเป็นเรื่องยากเล็กน้อย แต่คุณสามารถอ่านเอกสารได้
ฉันจะแสดงวิธีการทำ
ในกรณีของเรา เราสามารถทำรหัสผ่านได้และเราต้องการเข้ารหัส UTF แปด
ซึ่งค่อนข้างมีมาตรฐาน
จริงๆแล้วคุณรู้อะไรไหม?
ให้ฉันแสดงให้คุณเห็นว่าสิ่งนี้ทำอะไร
ฉันกำลังจะบอกว่าพิมพ์และฉันแค่ทำรหัสผ่านและรหัส UTF แปด
ลองทำกันดูก่อน
สำหรับตอนนี้ฉันจะแสดงความคิดเห็นว่า
ฉันจะเรียกการตรวจสอบ Pwned API แล้วเราจะทำหนึ่ง สอง สาม
มาเคลียร์กัน
ไปบันทึกและเรียกใช้โค้ดชิ้นนี้
เรียบร้อย มันเข้ารหัสแล้ว
คุณเห็น B ตัวน้อยนี่ตรงนี้ใน UTF แปดไหม
ฉันจะแสดงให้คุณเห็นว่าเกิดอะไรขึ้นเมื่อเราลบ ENCODE หลังจากนี้
ต่อไปเมื่อเราใช้ hash lib SHA1
ขอผมคัดลอกสิ่งนี้
ถ้าฉันเรียกใช้สิ่งนี้
ฉันได้รับวัตถุแฮช SHA1
หลังจากนี้เราสามารถเรียก dot hex Digest แบบนั้นได้
และถ้าฉันเรียกใช้สิ่งนี้
อืม.
แล้วเราจะตรวจสอบได้อย่างไร?
เราสามารถไปที่ hash lib และเพียงแค่ค้นหา hex Digest
ดังนั้นในที่นี้ คุณสามารถขอไดเจสต์ของการต่อข้อมูล blah, blah, blah, hex Digest
ได้ทุกเมื่อ
ดังนั้นจึงไม่ได้อธิบายอะไรให้เราเลยจริงๆ
ไปที่ส่วนถัดไปและส่วนถัดไปกันเถอะ Hex Digest
ส่งคืนวัตถุสตริงที่มีความยาวสองเท่าที่มีเลขฐานสิบหกเท่านั้น
นี่เป็นเพียงบางสิ่งที่เราต้องทำเพื่อแปลงวัตถุนี้เป็นสตริงเลขฐานสิบหก
ส่วนต่อไป เพื่อที่จะเห็นด้วยกับ API คือการแปลงทั้งหมดนี้เป็นตัวพิมพ์ใหญ่
ดังนั้นถ้าฉันทำบนนี้
และฉันบันทึกและเรียกใช้อีกครั้ง
ทุกอย่างเป็นตัวพิมพ์ใหญ่ เช่นเดียวกับที่เราเห็นเมื่อเราดู Sha one
นี่เป็นเพียงบางสิ่งที่คุณไม่จำเป็นต้องรู้จริงๆ
คุณต้องใช้ Google ไปรอบ ๆ และดูวิธีใช้งานจริง
ตอนนี้ ให้ฉันแสดงให้คุณเห็นจะเกิดอะไรขึ้นเมื่อเราไม่ใช้ UTF 8 ENCODE
ดังนั้นถ้าฉันทำอย่างนี้และเรียกใช้สิ่งนี้
คุณเห็นว่า?
ฉันได้รับข้อผิดพลาด
ต้องเข้ารหัสอ็อบเจ็กต์ Unicode ก่อนทำการแฮช
ดังนั้นมันจึงให้ข้อผิดพลาดที่ดีและเราสามารถเข้ารหัสโดยใช้ UTF แปดแบบนั้นได้
นี่จึงเป็นแค่มาตรฐาน
อีกครั้งไม่มีอะไรบ้าเกินไป
คุณสามารถอ่านการเข้ารหัสและ UTF แปดได้หากต้องการด้วยตัวเอง
กุญแจสำคัญที่นี่คือในตอนท้ายเรามีรหัสผ่าน SHA one ที่เราสามารถส่งได้
ขอผมคัดลอกทั้งหมดนี้
กำลังจะถอดพิมพ์
และที่นี่ เราจะมีรหัสผ่าน SHA one ของเรา
สุดยอด.
ตอนนี้ขอคืน SHA นี้ก่อน
รหัสผ่าน.
และถ้าฉันเรียกใช้สิ่งนี้
ดูเหมือนว่าโค้ดของเราจะใช้งานได้
เราไม่ได้พิมพ์อะไรเลย แต่หวังว่า
เราได้รับรหัสผ่าน sha one นี้
ในวิดีโอหน้าฉันต้องการลองส่งสิ่งนี้ไปยัง API ของเราและดูว่าเราได้รับการตอบสนองแบบไหน
มาทำกัน
หยุดพัก.
เจอกันใหม่ตอนหน้าค่ะ