จัดการ Security RESTful API ของ WordPress ด้วย Basic Auth

By BomBay PobThorn
2 min read

Table of Contents

ใน WordPress API คนที่ไม่มีความรู้ด้าน Security จะสามารถถูกดึง API ไปใช้งานจาก web scraping ต่างๆ ได้ ดังนั้งจึงเป็นสาเหตุให้เราต้องทำความเข้าใจเรื่องของ WordPress WP JSON กันแล้ว

ทำไมต้อง Authentication

เพราะถ้าเราไม่สร้างความ Security ที่ให้กับตัวของ WP JSON ก็สามารถโดนดึงได้อยากมีอิสระดังนั้นผมจะพาทำหน้าที่ง่ายที่สุดใช้งานทาง Plug in ที่ผมแนะนำมา ซึ่งจะมีท่าในการ Authentication 2 ท่า

Photo by Ed Hardie on Unsplash
  1. Basic Auth
  2. JWT Auth
wordpress jwt
https://supertokens.com/static/b0172cabbcd583dd4ed222bdb83fc51a/9af93/jwt-structure.png

ก่อนทำ Auth จะมีหน้าหน้าเป็นแบบนี้

step 1 →ใช้ plugin basic auth

เข้าไปเลือก install plugin WordPress REST Authentication

wordpress restful api

เลือก Install แล้วเข้าเมนูจากตรงนี้ได้เลย

step 2 → สร้าง user สำหรับร้องขอ token

ก่อนจะทำการการ auth เราต้องทำให้รัดกุมมากขึ้นโดยการกำหนด user สำหรับใช้ api ขึ้นมานั้นเอง ดังนั้งทางผมจะสร้าง user ชื่อว่า uTest ขึ้นมาเพื่อเป็นผู้ได้รับสิทธิ์ในการดึง api อย่างนั้นเอง

เลือกเมนู เพิ่มผู้ใช้งาน

สร้าง User

เลือกเป็น ผู้เขียน หรือ writer

หลังจากได้ User แล้วต้องเข้าไปอยู่ในขั้นตอน สร้าง token สำหรับให้ end user เลือกใช้ข้อมูล

เข้าใจ basic auth เบื้องต้น

จริงๆแล้วตัว basic auth ไม่มีอะไรซับซ้อนมากมายครับเป็นการ นำ username:password เข้ารหัสด้วยวิธีต่างๆ ในขั้นตอนการทดสอบนี้ เราจะใช้วิธีการเข้ารหัสด้วย Base64 ตาม plugin นะครับ เดี๋ยววิธีการของ JWT จะตามมาในบทควมต่อไป

https://assets.website-files.com/5ff66329429d880392f6cba2/61e7b5289894978b8941d1a0_basic%20authentication%20Preview.jpg

หลักการ Basic auth

  1. นำ user:pass จากผู้ใช้มาเข้ารหัส ด้วย Base64
  2. นำ String ที่ได้มา set ใน header basic + ‘user:pass’
  3. ส่งไปร้องขอ ข้อมูลจาก Server
  4. server decode และตรวจสอบความถูกต้องของ User
  5. server ตอบกลับข้อมูล

step 3 → ตั้งค่า basic auth สำหรับใช้งาน

การตั้งค่าของ plugin ตัวนี้มีไม่มากมายเพราะ business model ของเค้าจะเป็น freemium ดังนั้นของฟรีก็จะใช้ง่ายแต่ความ security ไม่แข็งเท่าที่ควร

เลือก Basic authentication

ทดสอบใช้ API get

จากนั้นกรอก username password ที่เราเป็นคนสร้างลงไปครับ

เมื่อกรอกเสร็จแล้วเลือก Test ดูครับถ้ากรอกรหัสถูกระบบจะ return ข้อมูลที่เป็น post ของเว็บไซต์ของเราออกมา

note : ถ้าเราใส่ user,pass ไม่ถูกต้องจะขึ้นแบบนี้ 400

{ 
"Status" : "error", 
"code": 400 
}

เพียงเท่านี้ method get แบบมีระบบ auth ก็ถือว่าเป็นอันเสร็จเรียบร้อยแล้ว

step 4 → ทดสอบ create blog ผ่าน API

นอกถ้าจะเพิ่ม security ของฝั่ง method get แล้ว method post ยังสามารถยิงได้ด้วยและสร้าง post ขึ้นมาเป็นตัว WordPress ได้อีกทำให้ ทำ third party back office เพื่อจัดการ WordPress ได้อีกด้วย

สามารถทดสอบผ่าน Postman ได้เลย โดย download simple ของ postman มาใช้ได้เลย

Note : อย่าลืม กด Finish ก่อน

Payload จะประมาณนี้

{  
     "title":"Sample Post", 
     "status":"publish" 
}

ยิง Post เสร็จ server จะตอบกลับ เป็น data ที่เรากรอกและเช็คข้อมูลจากหน้า post ของเวิร์ดเพรสจะพบว่า post ได้ถูกสร้างเรียบร้อยแล้ว

เป็นอัน complete ✅

ที่เหลือก็ตาคุณแล้ว

สาระจากบทความนี้สามารถนำไปต่อยอดการทำ RESTFul API ของ WordPress ได้อย่างมีมิติมากขึ้นทำให้เราสามารถทำให้ตัวของเวิร์ดเพรสเองเป็น content manager back office ได้อย่างสมบูรณ์แบบมากขึ้นนั้นเอง ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้ไปต่อยอดในงานของผู้อ่านต่อไปไม่มากก็น้อย

Have a nice day :)

Tagged in:

Last Update: สิงหาคม 01, 2024

About the Author