PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

แนวทาง การเข้ารหัส รหัสผ่านในฐานข้อมูล อย่างง่าย ตอนที่ 1

22 February 2015 By


เนื้อหาบทความนี้ จะเป็นแนวทาง การเข้ารหัส รหัสผ่านในฐานข้อมูล
กรณีเรามีข้อมูลสมาชิกอยู่แล้ว แต่ไม่ได้ทำการเก็บรหัสผ่าน แบบเข้ารหัสตั้งแต่แรก
 
โดยจะใช้คำสั่ง 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']))));
// รับค่ารหัสผ่านที่กรอกเข้ามา เข้ารหัสก่อน แล้วเอาตัวแปรนี้ไปบันทึกลงฐานข้อมูล




 
 

Tags:: md5 เข้ารหัส

เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





URL สำหรับอ้างอิง