แนวทาง การเข้ารหัส รหัสผ่านในฐานข้อมูล อย่างง่าย ตอนที่ 1
เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdeemd5 เข้ารหัส
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ md5 เข้ารหัส
ดูแล้ว 8,832 ครั้ง
ไปที่
Copy
เนื้อหาบทความนี้ จะเป็นแนวทาง การเข้ารหัส รหัสผ่านในฐานข้อมูล
กรณีเรามีข้อมูลสมาชิกอยู่แล้ว แต่ไม่ได้ทำการเก็บรหัสผ่าน แบบเข้ารหัสตั้งแต่แรก
โดยจะใช้คำสั่ง php เข้ารหัส ดังนี้
$gen_password=sha1(md5(md5("รหัสผ่านที่ยังไม่ได้เข้ารหัส")));
หรือใครจะใช้รูปแบบอื่นก็ได้ ดัดแปลงได้ตามต้องการ
มาดูตารางฐานข้อมูลสมาชิกที่ยังไม่ได้เข้ารหัสรหัสผ่าน
* ฟิลด์ member_password ถ้ากำหนดขนาดความยาวของข้อมูลน้อย เช่น น้อยกว่า 20
ตัวอักษร ให้แก้ไขปรับความยาวเป็นประมาณ 80 เพื่อรองรับรหัสผ่านที่เข้ารหัสแล้ว
member_id | member_name | member_password | member_fullname | member_type |
---|---|---|---|---|
1 | demo | 123456 | demo | 1 |
2 | user1 | test | user1 | 2 |
3 | user2 | 'ssodao csoj,c | user2 | 1 |
ให้เราเพิ่มฟิลด์เข้าไปในตาราง เพื่อเก็บค่ารหัสผ่านมาพักไว้ จัดการ ในที่นี้เเพิ่มเป็น temp_password
member_id | member_name | member_password | member_fullname | member_type | temp_password |
---|---|---|---|---|---|
1 | demo | 123456 | demo | 1 | |
2 | user1 | test | user1 | 2 | |
3 | user2 | 'ssodao csoj,c | user2 | 1 |
จากนั้นใช้คำสั่ง sql ทำผ่าน phpmyadmin หรือผ่าน php ด้วยคำสั่ง sql เพื่อคัดลอก
รหัสผ่านจากฟิลด์หลัก member_password มาเก็บไว้ใน temp_password
เช่นใช้คำสั่ง
$q=" UPDATE tbl_member SET temp_password=member_password WHERE temp_password='' "; mysql_query($q);
จะได้ตาราง
member_id | member_name | member_password | member_fullname | member_type | temp_password |
---|---|---|---|---|---|
1 | demo | 123456 | demo | 1 | 123456 |
2 | user1 | test | user1 | 2 | test |
3 | user2 | 'ssodao csoj,c | user2 | 1 | 'ssodao csoj,c |
ต่อไปจะใช้ php ดึงรายการมาทำการเข้ารหัส และอัพเดทเข้าไปในตารางอีกครั้ง
* หากมีข้อมูลจำนวนมาก เช่นสมาชิกหลายหมื่น ก็สามารถ ใช้ limit จัดการทีละไม่มากได้
การใช้คำสั่ง php
$q=" SELECT * FROM tbl_member WHERE member_password=temp_password AND temp_password!='' "; $qr=mysql_query($q); while($rs=mysql_fetch_array($qr)){ $gen_password=sha1(md5(md5($rs['temp_password']))); @mysql_query(" UPDATE tbl_member SET member_password='".$gen_password."' WHERE member_id='".$rs['member_id']."' "); echo $rs['member_password']."<br>"; }
จะได้ตาราง
member_id | member_name | member_password | member_fullname | member_type | temp_password |
---|---|---|---|---|---|
1 | demo | f122db007ed655921f98184e4302bba84990ff68 | demo | 1 | 123456 |
2 | user1 | c375f5ca90143176681418485aff1f157d64aa1c | user1 | 2 | test |
3 | user2 | 1a3bad4b6e9e11d830558d84f5a6ecf658982349 | user2 | 1 |
'ssodao csoj,c |
เมื่อทำเสร็จแล้ว ให้เราทดสอบการล็อกอิน โดยเราต้องปรับโค้ดการล็อกอินใหม่
เพื่อตรวจสอบค่าจากการเข้ารหัส หากทดสอบโอเคแล้ว ก็ให้ลบฟิลด์รหัสผ่านเชื่อคราว
ในที่นี้ชื่อ temp_password ออกไปด้วย
ตารางจะได้เป็น
member_id | member_name | member_password | member_fullname | member_type |
---|---|---|---|---|
1 | demo | f122db007ed655921f98184e4302bba84990ff68 | demo | 1 |
2 | user1 | c375f5ca90143176681418485aff1f157d64aa1c | user1 | 2 |
3 | user2 | 1a3bad4b6e9e11d830558d84f5a6ecf658982349 | user2 | 1 |
เรามาดูการตรวจสอบการล็อกอินที่จะต้องปรับ
if(isset($_POST['login']) && $_POST['login']!=""){ $chk_password=sha1(md5(md5(stripslashes($_POST['password'])))); // เข้ารหัส รหัสผ่านที่เราเข้ามาตรวจสอบ แล้วใช้ตัวแปรนี้ไปเช็คใน ตารางฐานข้อมูล $q=" SELECT * FROM tbl_member WHERE member_name='".$_POST['username']."' AND member_password='".$chk_password."' AND member_type='1' LIMIT 1 "; $qr=mysql_query($q); if($qr && mysql_num_rows($qr)>0){ $rs=mysql_fetch_array($qr); echo $rs['member_name']."<br>"; }else{ echo "No"; } }
เช่นเดียวกันกับหน้าสมัครสมาชิก ให้รับปรับค่ารหัสผ่าน แบบเข้ารหัส ก่อนบันทึก
โดยอาจจะใช้คำสั่ง
$gen_password=sha1(md5(md5(stripslashes($_POST['password'])))); // รับค่ารหัสผ่านที่กรอกเข้ามา เข้ารหัสก่อน แล้วเอาตัวแปรนี้ไปบันทึกลงฐานข้อมูล
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ
เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก
กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ
ยังไม่เป็นสมาชิก
สมาชิกล็อกอิน
สมาชิกล็อกอิน
( หรือ เข้าใช้งานผ่าน Social Login )
URL สำหรับอ้างอิง
Top
Copy
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ