แนวคิดการแก้ปัญหาส่ง id ผ่าน URL ที่เป็น Primary Key แบบหลายฟิลด์

โดย SONGCHAI SAETERN

การซ่อนไอดีของเรคอร์ดที่กำลังแสดงผล


กรณีที่เราคลิกเข้าไปอ่านกระทู้ในเว็บบอร์ด หรือคลิกเข้าไปอ่านข่าว หรือข้อมูลใดๆ ส่วนใหญ่เราจะส่ง ID ไปพร้อมกับ URL เพื่อดึงข้อมูลมาแสดง

แต่ทีนี้ถ้าคนเปลี่ยน ID ก็จะเห็นข้อมูลของคนอื่นๆได้ ดังนั้นเราไม่อยากเปิดเผย id จริงบน url หรือแม้กระทั่งใน input hidden อยากเข้ารหัสไว้ แต่พอเจอเคสที่ Primary key หลายๆตัว เวลาจะแสดผล โดยส่งคีย์ผ่าน url ที่เข้ารหัสแล้ว 3 ตัว มันยาวเฟื้อเลยครับท่าน!!

ก็เลยคิดว่าจับมารวมกันแล้ว md5() ซะเลย แต่ md5() อย่างเดียวยังไม่ตอบโจทย์ ก็เลยคิดว่าเข้ารหัสด้วยฟังก์ชั่นที่ใช้ประจำอีกที แล้วส่งไปตามปกติ

localhost/project?key=asd45632sd0043dsuitexxvnkoiyf

แล้วหน้าแสดงผลก็ถอดรหัส 1 ครั้ง
ก็จะได้ md5 ชุดแรกมาใช้ใน where

ก็จะต้อง CONCAT() มัดฟิลด์รวมกันและ MD5() ใน WHERE อีกที

ก็จะได้โค้ดแสดงข้อมูลตามไอดีที่ส่งมาดังนี้

SELECT *
FROM my_table
WHERE MD5(CONCAT(fieldA, fieldB, fieldC)) = '$key_ md5'