มาศึกษาการเข้ารหัสผ่านให้มีความปลอดภัยมากยิ่งขึ้นโดยใช้อัลกอรึทึมที่ชื่อ bcrypt กันครับ
Workshop นี้สามารถใช้ได้ตั้ง PHP5.5 เป็นต้นไป ตัวอัลกอรึทึมจะมีการเก็บสตริงขนาด 60 ตัวอักษร มีความปลอดภัยสูง และเป็นการเข้ารหัสแบบทางเดียว(one-way hashing algorithm.) ก็คือไม่สามารถถอดรหัสได้นั้นเอง ซึ่งแน่นอนว่ามันปลอดภัยกว่าการใช้การเข้ารหัสแบบ md5 , sha1 แน่นอนครับ ตัว bcrypt จะใช้ security parameter ค่าสุ่มที่ใส่เพิ่มเข้าไปให้รหัสที่มีการสุ่มแต่ละครั้งจะต่างกัน (salt) แม้จะเป็นรหัสผ่านตัวเดียวกันก็ได้ตาม และ ค่าความยากของการคำนวณ (cost) จะเริ่มต้นที่ 10 และมีการใช้คำสั่ง password_verify เพื่อเปรียบเทียบรหัสผ่านว่าตรงกันหรือไม่
Code ตัวอย่าง *มีคอมเม้นในโค้ด
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php echo '<h4> How to Secure Password Using bcrypt in PHP? </h4>'; //สมมติว่ารับค่าจาก input ที่ส่งมาจากฟอร์ม $username = 'admin'; $password = '1234'; //ลองแสดงออกมาดู echo 'my username = '.$username .'<br>'; echo 'my password = '.$password .'<br>'; //Secure Password Using bcrypt //cost (int) - which denotes the algorithmic cost that should be used. Examples of these values can be found on the crypt() page. //If omitted, a default value of 10 will be used. This is a good baseline cost, but you may want to consider increasing it depending on your hardware. //กำหนด cost 10 เพื่อให้การเข้ารหัสรวดเร็วยิ่งขึ้น *ตัวเลขยิ่งเยอะ ยิ่งทำงานช้า ซึ่งขึ้นอยู่กับความเร็วของคอมที่เราใช้ครับ เพราะฉะนั้น 10 ก็พอครับ หรือจะลองเพิ่มตัวเลขแล้วรันดูครับ ว่าจะดีเลเยอะไหม!! $options = [ 'cost' => 10, ]; //รหัสผ่านที่นำมาเข้ารหัส $store_password = '1234'; //นำเข้ากระบวนการเข้ารหัสด้วย PASSWORD_BCRYPT $passwordHash = password_hash($store_password, PASSWORD_BCRYPT, $options); //ลองแสดงออกมาดู ทุกครั้งที่รีเฟรซหน้าเว็บ รหัสจะสุ่มไปเรื่อยๆ echo 'password hash using PASSWORD_BCRYPT = <br> ' .'<font color="red">' .$passwordHash .'</font>'; echo '<br>'; //ตรวจสอบความถูกต้องของ username และ password echo 'Verify Users Password <br>'; //check username ตรวจสอบ username if($username=='admin'){ //Verify Password ตรวจสอบ password ระหว่าง $password และ $passwordHash $validPassword = password_verify($password, $passwordHash); if($validPassword){ //password ถูกต้อง echo '<font color="blue"> password match!! </font>'; }else{ //password ผิด echo '<font color="red"> wrong password !! </font>'; } }else{ //username ผิด echo 'Wrong Username !!'; } ?> |
ผลการทำงาน
เรียบร้อยครับ ลองเอาไปประยุกต์ใช้ดูครับ
ตัวอย่างระบบ Login Logout โดยใช้ Hash Password คลิก
อ้างอิงจาก
https://www.php.net/manual/en/function.password-hash.php
https://www.php.net/manual/en/password.constants.php
https://yourblogcoach.com/how-to-secure-password-using-bcrypt-in-php/
ขอแนะนำระบบพร้อมใช้งาน *รายละเอียดและราคาอยู่ใต้คลิป
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com ได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
fanpage : https://www.facebook.com/sornwebsites/