ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก กันยายน, 2018

Python Web Dev: เสริมความปลอดภัยด้วยการเข้ารหัสกับ JWT กับ PyJWT

การส่งข้อมูลระหว่างกันของเซิร์ฟเวอร์โดยปกตินั้นสามารถถูกดักจับได้ด้วยผู้ไม่หวังดี จึงมีสิ่งหนึ่งที่เข้ามาช่วยแก้ปัญหาด้านนี้ได้บ้างก็คือ "การเข้ารหัสข้อมูล (encoding data)" ด้วยเหตุนี้เองในบล็อคนี้ ผมจึงมาแนะนำการเข้ารหัสในรูปแบบหนึงซึ่งเรียกว่า JWT มันคืออะไรนั้นมาดูกันเลย JWT ย่อมาจาก JSON Web Token  เป็นมาตรฐานเปิด ( RFC7519 ) ที่เข้ามาแก้ปัญหาการส่งข้อมูลระหว่างกัน อย่างปลอดภัย โดยที่ถูกออกแบบให้มีขนาดที่กระทัดรัดและเก็บข้อมูลภายในตัวมีหน้าตาเป็นชุดตัวอักษรชุดหนึ่งแบ่ง เป็น  3 ส่ วน  1. Header คือส่วนที่บอกว่าข้อ ความชุดนี้เข้ารหัสเแบบใดอยู่ หรือมีข้อกำหนดอะไรอยู่บ้าง 2. Payload เก็บข้อมูลจริง ๆ เช่น User ID, Roles ของผู้ใช้ , E-mail ผู้ใช้เพื่อระบุตัวตน  3. Signature เป็น digital signed เอาไว้ตรวจสอบว่า token ถูกสร้างขึ้นมาอย่างถูกต้องเพราะข้อมูลใน payload นั้นสามารถเปลี่ยนแปลงโดยบุคคลที่สามหากมีการเปลี่ยนแปลงข้อมูลขึ้นมาจะทำให้  signature ไม่ตรงกันกับ token ดังกล่าวจะถูกตรวจพบว่าไม่น่าเชื่อถือและไม่นำมาใช้งานในระบบ จากรูปจะ แสดงส่วนประกอบต่างๆของ JWT ประก

Python Web Dev:มาสร้าง REST API กับ Flask ด้วยภาษา Python กันเถอะ

เพื่อนๆหลายคนอาจจะเคยสร้าง API มาบ้างแล้วด้วยภาษาอื่นๆ เช่น Nodejs ( Javascript ) หรือ Grails ( JAVA ) ( หรือไม่เคย O_O ) วันนี้ผมจะมาแนะนำการทำ REST API แบบง่ายๆ แค่กระพริบตา ด้วย  Flask-RESTful   ซึ่งเขียนด้วยภาษา Python กันนะครับ อย่าเพิ่งรีบเบื่อหนีหายกันไปก่อนนะ :) ก่อนอื่นเลยครับ เราต้องติดตั้ง package ก่อน ตามนี้เล้ยย                                                                         pip install flask-restful                                                                                                             และในครั้งนี้ผมจะใช้โปรแกรม Postman ในการส่ง request medthods ต่างๆ ไปยัง API ที่เขียนไว้เพื่อตรวจสอบความถูกต้องนะครับสามารถ download ได้  ตามลิงค์นี้เล้ยยย พอติดตั้งแล้ว หน้าตาโปรแกรมก็จะประมาณนี้ จากนั้นเรามาลองสร้าง REST API อย่างง่ายกันดีกว่า สร้างไฟล์ ชื่อ api.py จากนั้นลองสั่ง run ดูนะครับ หากขึ้นตามภาพด้านบนหมายความว่า API Server ของคุณถูกเปิด อยู่ที่  http://127.0.0.1:5000/ เรียบร้อยแล้วววว หากเปิดด้วย browser ก็จะมีข้อคว