พลังที่ยิ่งใหญ่มากับความรับผิดชอบที่ใหญ่ยิ่ง! มาเพิ่มความปลอดภัยให้ Long-lived Channel Access Token ของ LINE Chatbot กันฮะ

Tan Warit
LINE Developers Thailand
3 min readMay 13, 2022
Photo by Jean-Philippe Delberghe on Unsplash

ถ้าพูดถึง ​Chanel Access Token หลายๆคนก็น่าจะใช้แบบ Long-lived กันใช่ไหมละครับ วันนี้ผมมีเทคนิคง่ายๆ ลงทุนนิ๊ดเดียวแต่ให้ผลตอบแทนมหาศาล จะช่วยให้การใช้ Channel Access Token แบบ Long-lived มีความปลอดภัยมากขึ้นเยอะ

Channel Access Token คืออะไร?

เพื่อนๆชาว LINE DEV ทุกคนน่าจะรู้จักเจ้า Channel Access Token ดีอยู่แล้วใช่ไหมครับ ที่มันเป็นกุญแจเอาไว้ไขเข้าใช้งาน LINE Messaging API ของ Chatbot เรา ไม่ว่าเป็นทั้ง Reply หรือ Push API ก็ต้องใช้ Channel Access Token ไขเข้าไปใช้งานก่อน ประเภทของ Channel Access Token ก็จะมี 3 แบบเนอะ ตั้งแต่

  1. Long-lived Channel Access Token ไม่มีวันหมดอายุ ใช้ได้ยาวๆแบบอมตะ
  2. Short-lived Channel Access Token มีวันหมดอายุ 30 วัน
  3. User-specified expiration (Channel Access Token v2.1) สามารถกำหนดวันหมดอายุได้ด้วยตัวเอง

ปล. อ่านข้อมูลเพิ่มเติมได้ที่บทความของอาจารย์ Mike Phulsuksombati LINE API Expert ของเราตามลิงก์ด้านล่างฮะ

ความเสี่ยงในการใช้ Channel Access Token แบบ Long-lived

เชื่อว่า LINE DEV ส่วนนึงก็น่าจะใช้แบบ Long-lived กันใช่ไหมครับ เพราะมันสะดวกสบาย กดสร้างครั้งเดียวไม่มีวันหมดอายุใช้ได้ยาวๆ ง่ายๆแบบนี้ใครจะไม่ใช้หละ 55+

แต่พลังที่ยิ่งใหญ่ ก็ต้องมากับความรับผิดชอบที่ใหญ่ยิ่ง เพราะการใช้แบบ Long-lived ก็ต้องใช้ด้วยความระมัดระวัง เก็บรักษาไว้ให้ดี มิเช่นนั้น Hacker ก็เอากุญแจเราไปใช้ได้ยาวๆเหมือนกัน 😱

มาเพิ่มความปลอดภัยให้ Long-lived Channel Access Token กัน!

เทคนิควันนี้ของผมง่ายมากๆเลยแทบจะไม่ต้องทำอะไรเลย (จบใน 3 วิแน่นอล) แต่เพิ่มความปลอดภัยให้กับ Long-lived Channel Access Token ได้เยอะนั่นก็คือ

เราสามารถกำหนดว่า IP address ของเครื่องไหนบ้างที่จะสามารถใช้ Long-live Channel Access Token ของเราได้

เอออ เพิ่มความ Secure ได้เยอะเลย พอเรากำหนดเฉพาะ IP address ของเครื่อง Server เราให้ใช้ได้เท่านั้น แล้วถ้าเกิดเจ้าตัว Long-lived หลุดไป คนอื่นก็เอาไปใช้ไม่ได้อยู่ดี ดีย์งาม!

วิธีการก็คือให้เราไปที่ LINE DEV Console -> Channel ที่เราต้องการจะตั้งค่า -> Tab Security แล้วทำกดปุ่ม Add IP address -> กำหนด IP address ของเครื่อง Server ที่เราจะอนุญาตให้ใช้ได้ลงไป

สามารถกำหนด IP address แยกเป็นตัวๆ หรือถ้ามีหลายเครื่องสามารถใช้ Classless inter-domain routing (CIDR)

ทดสอบ

ถ้าเราลองใช้เครื่องอื่นๆซึ่งมันเป็นคนละ IP address กับที่เราตั้งค่าไว้ เวลาเราเอา Long-lived Channel Access Token ไปใช้ เราจะได้ Error 403 Forbidden “Access to this API denied due to authorization error”

Bonus: ถ้า Long-lived Channel Access Token หลุดไป ทำไงดี!?

ในกรณีที่เราทำ Channel Access Token แบบ Long-lived หลุดไป ก่อนอื่นทำใจร่มๆก่อน พอตั้งสติได้ให้เราทำการ Revoke ตัว Channel Access Token ตัวเก่าด้วย 2 วิธีดังนี้

  1. ไปที่ LINE DEV Console -> Channel ที่เราต้องการ -> Tab Messaging API -> เลื่อนลงมาล่างในส่วนของ Channel access token และกดปุ่ม Reissue แล้วรอแพร๊บภายใน 5 นาที มันจะถูก Revoke แน่นอน

2. สามารถสั่ง Revoke ด้วย API ได้เลย โดยวิธีนี้พอยิง Revoke ปุ๊ปตัว Channel Access Token ตัวนั้นจะถูก Revoke ทันทีครับเจ้านาย! ดูรายละเอียดเพิ่มเติมได้ที่นี่

สรุป

ประมาณนี้ฮะเป็นเทคนิคง่ายๆที่บอกเลยว่าลงทุนน้อยแต่ให้ผลตอบแทนเยอะ ถ้าใครกำลังใช้ Long-lived Channel Access Token อยู่ลองเอาไปใช้กันดูนะครับ หรือว่าลองเปลี่ยนมาใช้ Channel Access Token ประเภทอื่นๆทั้งแบบ Short-lived และแบบ User-specified expiration เพื่อเพิ่มความปลอดภัยก็ได้นะครับผม วันนี้ลาไปก่อน สวัสดีครับ

--

--